Advertisement

Programming and Higher Mathematics

Started by September 20, 2018 09:10 PM
58 comments, last by dr3w 6 years, 4 months ago
3 minutes ago, Fulcrum.013 said:

I has study it in secondary school.

So at some point of your life you spent years to learn that.

14 minutes ago, NikiTo said:

I learn upon demand.

Most of tasks usualy dont say wich same mathematical tools it require. But knowledge of tools features allow instantly determine what same of it allow to solve it task easily.

 

8 minutes ago, NikiTo said:

So at some point of your life you spent years to learn that.

Of cource. First you have to spent time to leran/build tools, and only then tools began to work for you. But tools productivity much higher than empty hands productivity, and most of tasks just can not be done without tools. Math just is a main tool of programmer.

#define if(a) if((a) && rand()%100)

Advertisement
56 minutes ago, NikiTo said:

Was you born knowing about dot products?
I learn upon demand. Code upon demand. For a stand alone developer, it is very important to save time.

I've known some developers with that attitude of refusing to learn anything until they "really needed it." I struggle to think of a single one whose code was not an unmaintainable mess, full of inefficiencies and basic misunderstandings of the idioms of the language they were working in. They worked so hurriedly and in such an unthinking way that they actually created more bugs for themselves and more pain for the rest of us than they would have if they had gone a little slower and bothered to keep up with what everyone else had studied in terms of architecture and math. It's ironic - in their drive to puke out code as fast as possible, they actually progressed slower than if they had taken the time to keep up with the learning of the rest of us and their code pissed the rest of us off when we had to deal with it. Of course, they may not have seen that as a bad thing; some programmers joke about writing code that's so impenetrable that it's "job security"...

Don't be that guy, especially when it comes to really foundational stuff. Taking time to study things when you don't immediately need them will save you (and everyone else, if you ever decide not to be a solo dev) a lot of time and the quality of your code will go up. I would go so far as to say that you will more likely than not become irrelevant as a developer if you stop learning.

I struggle to believe that you're so swamped with development work that you can't take a little time every day to learn basic things like dot products...

50 minutes ago, NikiTo said:

So at some point of your life you spent years to learn that.

Most people I know learned dot products either in their last year of high school or their first or second year of university. From what I recall, in both cases total class time spent was less than a week. They're a very simple concept. Knowing all their uses takes longer and is somewhat more situational, but knowing the theory primes your brain for the practical.

9 minutes ago, Oberon_Command said:

I struggle to believe that you're so swamped with development work that you can't take a little time every day to learn basic things like dot products...

What do you mean? "Cross product gives a third vector that is perpendicular to the tho input vectors" and "dot product gives a scalar value that can be used to obtain the angle"

I don't really need to know more about it. How much time these two sentences take to learn? In school they could make me deliver the dot/cross products from pythagorean theorem on an exam. In real life i don't need that level of math. I can not do it right now. But i used dot and cross without any problem.

My working code is a mess, but whom's not? Before sharing my code to others, i take a good time refactoring it for readability of a third person.
My final codes look great!

I understand that people need to give some value to the time they spent learning math in school. But at the same time, the truth is a person who is bad at math can code too.

 

22 minutes ago, NikiTo said:

I don't really need to know more about it.

also dot product can be used to obtain a projection length, to calculate a distance from point to plane, fast determine is angle betwin two vectors is sharp, right or obtuse without ecpensive evaluation of angle and have many other applications. For example graphics pipeline use dot product of triangle normal with cam dir vector to clip backface triangles.

Cross product can be used for determinig is consequtive vectors have a left or right turn or vectors is colinear,  to calculate distance betwin straight lines in 3D, to calculate square of parallelogram and triangle that is half of parallelogram, and in couple with a dot product (aka mixed product) to calculate a volume of paralellepiped and tetrahedron that is 1/3 of parallelepiped volume. And also have many other applications. For example rotation momentum of applied to body linear momentum calculated as cross product of applied linear momentum vector and vector from mass center to apply point.

Really to solve real tasks helpfull its features of dot and cross products instead of definitions of it.

#define if(a) if((a) && rand()%100)

@Fulcrum.013 All those are instructions. It is no different at first look from reading a biology book(no formulas used). I can google about anything you just wrote and implement it.

We were told by teachers that googleology is very important science. The ability of a person to formulate his searches in a way that google can help. In google - skip/discard triangles -> back-face culling -> sign of dot -> formula, voila!

I just have no more to add to this discussion.

Advertisement
12 minutes ago, NikiTo said:

We were told by teachers that googleology is very important science

And we were told by Google that googlology dont worth a dime without understanding of sciences tat you googling. 

12 minutes ago, NikiTo said:

In google - skip/discard triangles -> back-face culling -> sign of dot -> formula, voila!

Now try to google pls "realtime torus-cylinder collision detection"

#define if(a) if((a) && rand()%100)

29 minutes ago, NikiTo said:

We were told by teachers that googleology is very important science.

Grandfather Lenin has said that only importend science is Marksism-Lenenism and other sciences is not importent. We all know what happend later with Soviet Union that has belive it tesis.

#define if(a) if((a) && rand()%100)

Googleology will only get you so far. If you know linear algebra really well, you'll recognize vectors and linear mappings everywhere. If you don't know linear algebra really well, it might not occur to you that an audio signal is a vector, that the dot product can be used to define an angle between audio signals, which gives you a measure of similarity, or that the total energy of an audio signal is precisely the square of the length of the vector. Or that the definition of correlation in statistics is suspiciously similar to the definition of cosine in geometry; realizing this enables you to leverage your intuitions of geometry for statistics, or it can help you think of high-dimensional geometry using the intuitions from statistics.

Just like geometry, signal processing and statistics, programming is another discipline in this same universe of related fields, and a programmer that knows nothing about the other fields and how to draw connections between them will always be a second-rank programmer.

 

Modern programming was created in parts because not everybody is needed to know everything. Because a programmer could know about biology, other about physics, and all they can work together and program an app altogether. Abstractions and interfaces. A person without the most minimal knowledge in math can create the flowchart of a program.

Math is a plus, but not a must have.

In the future, programming as a whole will become pretty abstract. Now on competitions, genetic algorithms can create programs of such quality that no human can create. In the future "a programmer will be able to program for biology without knowledge of biology"
In the future programming will become a philosophic science.

In my second programming school the entrance exam had not math exam. Instead, it had an IQ exam.
 

51 minutes ago, alvaro said:

will always be a second-rank programmer

In my own opinion, introducing castes in a company is a bad thing.

@Fulcrum.013 for example, is good at math but bad at english :P:P:P  

This topic is closed to new replies.

Advertisement