How do I get into Computer Algebra? I'm a math student with some basic programming experience...

How do I get into Computer Algebra? I'm a math student with some basic programming experience. What language should I use? Would C++ work?

Other urls found in this thread:

umich.edu/~eecs381/handouts/C 11_smart_ptrs.pdf
twitter.com/SFWRedditImages

maxima uses lisp, which is the only god-tier language

If you want to start on your own then C++ is okay because if it will be powerful but then that brings in the issues that C++ has.

C++ is one of the very few real programming languages that still exist. The rest have died. By that I mean that in C++ the computer does EXACTLY what you tell it to do and what you tell it not do (except for special cases and you should look for undefined behaviours for your compiler).

Why is this is an issue? Because memory. If you tell C++ to ask the operating system to give your program some memory. IT WILL DO EXACTLY THAT. And it will fucking keep that memory until you go back to it and tell it to give it back.

As someone who is kinda of C++ professional I can tell you that if you do not already master the language, don't even think about learning it as you go, specially for the project you want to do.

So my real recommendation is to get a bitch ass pussy language like Java or Python where the language is actually a cuck. Python, like a cuck, doesn't really do anything. The only thing Python actually does is call bulls (C libraries) to have sex with your program, because Python little dick is too small to actually satisfy your program's sexual needs. Then when the gangbang is over Java/Python will then come in and automatically lick off all the cum and disgusting shit your program left lying around while it was fucking all those sexy C librares, like a good little cuck.

So yeah, learn Python or Java because if not then you will be spending more time focusing on the quirks of C++ than on implementing your program.

Do algebra on your computer

I don't think the language matters much. Learning a new language is a lot easier than actually understanding the algorithms.

starting peacefully and escalating quickly to blood orgy,i was amazed

on the side note, you have some issues my man

>on the side note, you have some issues my man

I am just a creative writer. My point is still clear and stands well.

C++ is hard because the commands you ask it to do are like god given demands that it will follow perfectly.

In Python/Java your commands are more like suggestions and the inner workings of the interpreter will choose how to actually perform what you ask of it. More than that, they will perform actions you do not request.

This is good because someone who does not specialize in how computers work can pick up these languages and just worry about their little idea while the interpreter takes care of all the shit that goes in the background.

And then, if you think about this situation as deeply as me, you realize that there are some parallels between Python/Java and real life cucks in the sense that they just watch. Python is not compiled, it is interpreted. It is actually C that does all the work, Python just sits there and watches how C fucks your program silly.

It is all just harmless fun.

I dont get it, are you shitting on everything else and gloryfing C/C++? Because I thought that elitism meme died off already.

A good programmer use wide variety of languages and sees them as only tools to help him in his agenda. He knows that each tool is good for specific type of job. He will not use only hammer for everything and follow it like a cult.

>are you shitting on everything else and gloryfing C/C++?

I am not shitting or shilling anything. I am giving a factual assesment of the matters.

Obviously my opinion C++ could be seen as more "positive" but if you notice, I recommended OP not to use C++ so I am clearly, in this instance, against it.

>A good programmer use wide variety of languages and sees them as only tools to help him in his agenda.

You don't need to tell me that, m8. I use interpreted languages even more than I use compiled languages. By a longshot.

But if OP was experienced, which he isn't. then I would recommend C++ because a CAS needs good performance and what better way to get performance than to send your commands directly to the computer via a compiled language.

But OP is clearly unexperienced so obviously he needs to use a babby language, as they call them. Which is not bad or wrong. It is just how the world works.

How old are you? Do you realize that people's first touch with programming languages were with compiled ones for decades?

For example in my highschool I had C as a first language.

>How old are you? Do you realize that people's first touch with programming languages were with compiled ones for decades?

I am 18, boi. Also what you say is true but you have to be realistic. Beginners don't go to program CAS's immediately. That is fucking ridiculous and batshit insane. I wouldn't even trust a first timer to program a fucking text editor. Not without fucking something up.

You are talking like if OP will have the time and dedication to learn C++ for 2 years. Only C++. Not even start his project. Just learn the language and then practice until he is perfect. And THEN go on to start his project.

OP probably just wants to learn the basics and get started, which is why I recommend babby languages.

>For example in my highschool I had C as a first language.

And none if you even understood how pointers worked so don't come to me with that shit.

You need to realize that OP did not ask for a recommendation to learn programming, he asked for a recommendation to build a CAS. In C++ that is not gonna happen. If you read on what the essentials for such a thing are the first thing is a really good garbage collector because algebraic manipulations are not simple computations. You don't know how much memory a command will need to request so your programming needs to be on its best behaviour if you do not want to fuck up and have your Computer Algebra System become a Memory Leak System.

Fucking retarded teenagers turning Veeky Forums to garbage

If you want to plot stuff, just use GNUPlot or mathematica or Octave.
If you want to do symbolic manipulation then the indisputable winner is Lisp, either read "Common Lisp a gentle introduction to symbolic computation" or go for Scheme and read "The little schemer" series. Scheme is much simpler, Common Lisp is much more powerful.
C++ is a terrible idea, if you want to do mathematics, you'll first have to learn a shitload of syntax and langauge semantics (more than in any other language anyway), you'll have to learn to be very explicit to the computer, dealing with memory almost manually, then you'll have to learn this artificial problem-specific """paradigm""" called Object Oriented Programming, and then you'll have to build everything from the ground up, always keeping an eye on the machine, rather than the problem you want to solve.
So yeah, lisp, and you can then export your internal data from lisp to something that a plotter language can understand, shouldn't be too hard.

>huge posts and authoritative advice
>I am 18
fuck off

Computer algebra is basic tier nonsense. Use Matlab, Mathematica or Maple. C++ will cause you unneccessary difficulty. If you really want to learn a proper language, try R or Python.

>recommending java
>memory is hard meme
>ignoring smart pointers

and don't come back.

ITT: Amateur programmers who made a calculator and think they know everything recommend another amateur to learn C++ to develop a CAS, basically an interprer. A beginner, programming an interpreter in C++. WHAT COULD GO WRONG?

>Symbolic
Computer Algebra and Symbolic Computation: Elementary Algorithms by Cohen
Computer Algebra and Symbolic Computation: Mathematical Methods by Cohen
Modern Computer Algebra by von zur Gathen and Gerhard
Algorithms for Computer Algebra by Geddes, Czapor, and Labahn
Polynomial Algorithms in Computer Algebra by Winkler
Symbolic Integration I: Transcendental Functions by Bronstein

>Evaluation
The Art of Computer Programming. Vol. 2: Seminumerical Algorithms by Knuth
Modern Computer Arithmetic by Brent and Zimmermann
Handbook of Floating-Point Arithmetic by Muller, et al.
Elementary Functions: Algorithms and Implementation by Muller

>Doesn't understand modern C++11 and RAII
>Thinks CASs are "basically an interprer"
>Posting on Veeky Forums while being under 21

play vidya gaems with people in your own age group.

>>Doesn't understand modern C++11 and RAII

No, I understand it. Will OP? C++ guides put those topics right at the end. He would have to commit too much to C++, more than he would need to commit to Python. Not that I'm a Python fan myself but I do know a thing or two about not being retarded.

>Thinks CASs are "basically an interprer"

It is an algebra interpreter, you moron.

>they tell me to fuck off
>that means they have taken a position in my retarded argument
fuck off

What other reason you have to tell me to fuck off

>XDDD LE YOUNG MEME
Pathetic.

that you're a fucking 18 year old brat
don't fuck off, keep bickering like a retard

>that you're a fucking 18 year old brat
Nice robust argument m8.

How does it feel? To have such a young person (I assume the reason you are #triggered is that you are 60) who knows so much more than you not only at programming but of programming education.

I don't blame you for being triggered. Not everybody can be perfect ;^)

:)

>In Python/Java your commands are more like suggestions

No, they just hide details like what is passed by reference/value/value-of-reference, reference counters, etc.

>Python is not compiled, it is interpreted. It is actually C that does all the work

Wrong, there are just-in-time compilers for python/java.

>He knows that each tool is good for specific type of job

Not always. Some languages are just plain garbage. cf Brainfuck, Whitespace, Java...

>I am 18, boi

So you're still a dumbass teenager who hasn't even finished the calculus sequence and have no life experience.

>And none [of] you even understood how pointers worked so don't come to me with that shit.

Take your pointers are hard meme back to /g/. Pointers are nothing more than addresses to memory locations that exist in memory as integers which you can further offset to get adjacent locations. This isn't rocket science.

And using pointers is no more or less dangerous than references. For example, calling "myvector.push_back(myvector[0]);" could cause the vector to expand causing the reference to myvector[0] to be invalidated causing a memory access violation even though you're not directly uses pointers.

>Octave

Nobody uses that shit over Matlab. InB4 "but muh Free as in Marxism!"

>dealing with memory almost manually,

umich.edu/~eecs381/handouts/C 11_smart_ptrs.pdf

>then you'll have to learn this artificial problem-specific """paradigm""" called Object Oriented Programming

C++ is not OOP and Java. You don't have to use objects if you don't want to.

>you'll have to build everything from the ground up, always keeping an eye on the machine

Or you can use generic programming.

>>As someone who is kinda of C++ professional
>>I am 18, boi
>professional
>at 18

Nothing is worse than a teenagers going through a pretentious phase.

>to have sex
>lick off all the cum
>fucking all those sexy

And you're a virgin, just great....

>No, they just hide details like what is passed by reference/value/value-of-reference, reference counters, etc.

And that is just what I said. That your code is not a list of commands, it is a list of suggestions and the interpreter decides what to do with them. Saying that it "hides" those things is just rewording my phrase, which was better worded because it was more imaginative. Personifying the programming language.

>Wrong, there are just-in-time compilers for python/java.

Ok, this is just nitpicking but this is true. Can't complain about this.

>who hasn't even finished the calculus sequence and have no life experience.

I've been working as a programmer ever since I was 17. I am sorry people like you need college to get work lol. What does it feel to be mediocre and unsuccesful? Now with all this easy money I can study pure mathematics with all the freedom in the world. No worries about "muh jobs".

>Take your pointers are hard meme back to /g/.

Your rant here is pretty much uncalled for. They didn't understood pointers because they were a bunch of fuckwit high school kids. And I knew and know a lot of fuckwit high school kids who still don't understand them.

>Nothing is worse than a teenagers going through a pretentious phase.

Well, I already explained what had to be explained here. If you are a programmer and did not get a job out of high school you are by definition a failure. I was programming in 5 languages when I was fucking 15. Got hired when I was 17. Still in the same company getting that trivial money.

>And you're a virgin, just great....

Again, my writing is way more imaginative that anything you could come up with. You won't admit it but you would not ever be able to make bizarre comparisons that are still technically correct.

Must feel bad.

>C++ guides
>learning programming through online webpage guides

>It is an algebra interpreter, you moron.
>I do know a thing or two about not being retarded.

I don't even.

If troll, 8/10. Good effort.

>I've been working as a programmer for a full year
kek

I could be wrong here but all the evidence points to 1 being bigger than 0, you faggot.

Are you studying CS by any chance?

>That your code is not a list of commands, it is a list of suggestions and the interpreter decides what to do with them

No, suggestions are like "register" and "inline" hints for compilers which they can ignore or not.

> I was programming in 5 languages when I was fucking 15

Nobody is impressed.

>evidence
yeah, like I want some faggot child to be able to identify me, no thanks

>I could be wrong here but all the evidence points to 1 being bigger than 0

>No, suggestions are like "register" and "inline" hints for compilers which they can ignore or not.

But this shows such a lack of imagination. Those would be the literal suggestions made by a compiler, not the more figurative "suggestion" I was describing in my original

>Nobody is impressed.

Oh, I'm sure you are. Oh, look at the time! You have that big data structures exam tomorrow! Ooh those are big and scary man!

Basically, I made an answer that was playful in nature while still answering OP's question to what I think is the best assesment of his situation. Faggots who can't do anything but be confrontational get salty because I wasn't recommending their lord and savior C++, even though I started my post by saying how C++ would be an advantage, but could not the best choice for a beginner who doesn't already know the language.

You people are fucking annoying. This is why I left /g/ like a year ago. Everyone is a fucking memer and everyone is a know it all. And I remember I was as shitty and retarded as you.

I remember back then recommending EVERYONE to use C++ always. Regardless of their goal. I was a retarded memer like you, but then I got a fucking job and realized that getting into the development of a long term serious project is more sensitive that the language memers would have you believe. But whatever.

You will learn some day.

>18 year old
>I remember I used to be like X back then
kek

>I HAVE A JOB NOW
whoop A+++++

I just realized that the only people who have even made an attempt at helping OP are me and this guy . Oh, and Everyone else is some retarded memer.

>hurr durr algebra in ur compator.

>I will say language doesn't matter in a thread that is asking for a language recommendation

bs comment about MY response
bs comment on my response
bs comment on my response
>LE QUOTE A BUNCH OF POSTS AT ONCE WITH A ONE LINER AT THE BOTTOM TOP MEME

And everything else seems to also be some kind of meme.

And this is why no one likes amateur wannabes.

>I am bickering and shitposting but I - and listen here - I AM CONTRIBUTING! YOU AREN'T!
whoooooop A+++++++++

Okay, let me help you on tomorrow's test.

What does the big O mean? (5 points)

The moment I learned c++ couldn' t do switch statements with strings I immediately regarded it as a shit language not worth learning

>I HATE YOU I'M 18 BUT YOU'RE A UNI STUDENT WAHHH
I don't study cs kek

>It is an algebra interpreter, you moron.

Please read one of these

shut the fuck up you retarded faggot

I get what you say but every CAS needs an interpreter and is, in a manner, just an algebra interpreter.

Sure, the inner workings of the computations and manipulation are a big deal, but all of that is for nothing if you do not have a good way to tell your program what exactly you want it to do and for that you will need an interpreter.

That or you will have to severely restrict what kinds of problems your program can understand and solve.

parsers are not interpreters

>How do I get into Computer Algebra

How to use Computer Algebra software/libraries or how to make them?

>parsers are not interpreters

>In computer science, an interpreter is a computer program that directly executes, i.e. performs, instructions written in a programming or scripting language, without previously compiling them into a machine language program.

And that is why the bit about the computing is important. A CAS is also not just a parser, but a full interpreter and that was my point. However you decide to structure your commands, they form a programming language.

hijacking with a similar question

CAS doesn't execute anything. You're giving it an string, it parses it and computes an operation (diff/int/simplify) on it, and then it returns a string.

>diff("x^2+5") -> "2x"

> c++

inferior to lisp for most purposes

Dunno why but i cannot post on /adv/ for shit despite i love that board, apparently i have a "Connection Error".

Anyway Get into MechEngy with some EE courses and get a CS minor if your school near you doesn't offer Robotics or Electronics major

>get a CS minor

Worthless. Get an EE/CpE minor and take their Fourier Transforms, Signal Processing, Control Theory, Digital Logic, CompArch, and Micro-controllers/Real-Time courses. Or better yet, just major in EE/CpE and take a few MechE courses.

Oh shit that's true, forgot about it.
IMO i think the latter is better since they did have the same courses as EE?

But it all depends on that user as well, we don't know his budget so we cannot know how could he do Robotics

Use your brain.
Your literally just need to google the available computer algebra softwares and the language they are written in.

OP here

Yes I know that, I'm just asking for advice from Veeky Forums...Why I would do that I don't know.

What about Haskell?

Haskell is very far from GUI apps like you posted in the OP. There's quite learning barrier before you do algebra smoothly in a strongly typed language.

Try matlab for a math oritatied language

I would recommend python if your more interested in math than programming

Yeah, go for haskell, it's a million times better than C++ for your particular purpose. It has good library support, and it's quite a friendly language (especially for mathematicians).
Even more so than lisp, both in the library support and in the beginner-friendliness (actual syntactic sugar), only falling behind in it's ability for symbolic manipulation.
I'll suggest Scheme again bro, really take a look at it (read The Little Schemer)