How do I learn how to program? I have no prior experience and only know basic math

How do I learn how to program? I have no prior experience and only know basic math.

Other urls found in this thread:

4chan-science.wikia.com/wiki/Computer_Science_and_Engineering?
amazon.com/Programming-Principles-Practice-Using-C/dp/0321543726
mitpress.mit.edu/books/little-schemer
7chan.org/pr/src
web-artanis.com/scheme.html
github.com/pkrumins/the-little-schemer
gnu.org/software/guile/manual/guile.html#Programming-in-C
youtube.com/watch?v=2Op3QLzMgSY&list=PLAA97f8v5JX5WRZ6DUBSsogXlG4biWinL
catalog.mit.edu/degree-charts/computer-science-engineering-course-6-3/
ocw.mit.edu/courses/electrical-engineering-and-computer-science/
mitpress.mit.edu/sicp/sicp.html
racket-lang.org/
python.org/
twitter.com/SFWRedditVideos

What do you want to do? Do you just want to make scripts that can solve simple problems for you, or do you expect to be making large, complex programs?

If you want to go the scripts route, I've heard python works good for that, but it does have its limitations

C and C++ won't hold you back, but they can be difficult at times. You could also learn a meme language like Rust or Java.

By having something to program, then learning how to do what you want.That should get you started at least. Through time you will learn quality as well.

I want something that challenges my mind. Is this good: 4chan-science.wikia.com/wiki/Computer_Science_and_Engineering?

Python is the easiest place to start that's also actually useful in the real world.

What you linked to is *extremely* in depth, I would recommend just focusing on learning one language and getting used to, not only just that language, but all of the concepts of programming in general. After that, branching out into many different fields will be much, much easier.

If you are looking for a "challenge", then learning c++ will be fine. You can get it to run on basically anything, and if you need to you can always switch to C, even if C developers get mad at you. I'm sure somebody can give you a book recommendation if you'd like.

I first learned how to program(first language was C++) by watching a video series on it, and then just looking up other tutorials on what else I needed to know. Overall, it lead to a lot of problems where I didn't fully understand something because the tutorials I read weren't meant to be read in the order I read them. 4/10, I probably should have just learned python

Don't worry about the maths, its need is exaggerated greatly, if you can do year 7 maths decently you're fine

Alright, Ill start with C++ and amazon.com/Programming-Principles-Practice-Using-C/dp/0321543726

That was true at the beginning now it's a cluster fuck of everything


Want to learn ?
Begin with a small programing language with a course that will make you think how make the program.
The little schemer is one of the best for for that.
mitpress.mit.edu/books/little-schemer

Here's the pdf but I recommend you to buy the book because otherwise you'll never read it.
7chan.org/pr/src
/The_Little_Schemer_4th_2.pdf

You've got this little tutorial to launch yourself but it's not near has good has the little schemer.
web-artanis.com/scheme.html

Here's also a github with examples
github.com/pkrumins/the-little-schemer

Then extend your knowledge with the book SICP.

Thanks, Ill try that out

What did he mean by this?

That he is posting from Starbucks.

I wish you to enjoy it user, because I did.
Happy hacking ;)

wew lads suprised nobody recommended taocp

basic concepts of programming (3~6 months)
so you understand how memory works (1 month at most)
so you can get shit done(5 months)
I don't know really...its honestly a meme(3 months)
so your shit runs fast(3 months)
so that you can get shit done(3 months)
I don't know..learn a library or something

Really ?
It's the oldest language to be used that survived (with Fortran).
There was shit tons implementation of it that in the end has given Common lisp and scheme.
Scheme who's has himself a few derivative like guile scheme.
Guile scheme is used in GUIX, Artanis, Shepperd, eMacs, Gnu Make and a lot more.
Want to use C in Guile ?
gnu.org/software/guile/manual/guile.html#Programming-in-C

The lisp family language is the language that will not die.
These lectures/videos will always be relevant in the teaching/computer world.
Lecture 1A | MIT 6.001 Structure and Interpretation, 1986
youtube.com/watch?v=2Op3QLzMgSY&list=PLAA97f8v5JX5WRZ6DUBSsogXlG4biWinL

Follow this course guide:
catalog.mit.edu/degree-charts/computer-science-engineering-course-6-3/

Using content at this site:
ocw.mit.edu/courses/electrical-engineering-and-computer-science/

Most importantly: APPLY APPLY APPLY! Reading about it and watching it on videos all day won't serve you whatsoever.

Departmental ProgramChoose at least two subjects in the major that are designated as communication-intensive (CI-M) to fulfill the Communication Requirement.Departmental Requirements Units6.0001 Introduction to Computer Science Programming in Python 66.042[J] Mathematics for Computer Science 126.UAT Oral Communication (CI-M) 1 9Select one of the following: 126.01Introduction to EECS via Robot Sensing, Software and Control 6.02Introduction to EECS via Communications Networks 6.03Introduction to EECS via Medical Technology Computer Science Requirements 6.004 Computation Structures 126.006 Introduction to Algorithms 126.009 Fundamentals of Programming 126.031 Elements of Software Construction 156.033 Computer System Engineering (CI-M) 126.034 Artificial Intelligence 12or 6.036 Introduction to Machine Learning6.045[J] Automata, Computability, and Complexity 12or 6.046[J] Design and Analysis of AlgorithmsElective Subjects 2 Select two Advanced Undergraduate Subjects 24-27Select one subject from the departmental list of EECS subjects 3 12Units in Major 162-165Unrestricted Electives 51-54Units in Major That Also Satisfy the GIRs (36)Total Units Beyond the GIRs Required for SB Degree 180

Advanced Undergraduate Subjects 6.023[J] Fields, Forces and Flows in Biological Systems 126.025[J] Medical Device Design (CI-M) 126.035 Computer Language Engineering 126.047 Computational Biology: Genomes, Networks, Evolution 126.061 Introduction to Electric Power Systems 126.101 Introductory Analog Electronics Laboratory (CI-M) 126.111 Introductory Digital Systems Laboratory 126.115 Microcomputer Project Laboratory (CI-M) 126.131 Power Electronics Laboratory (CI-M) 126.172 Performance Engineering of Software Systems 186.175 Constructive Computer Architecture 126.301 Solid-State Circuits 126.302 Feedback System Design 126.602 Fundamentals of Photonics 126.701 Introduction to Nanoelectronics 126.717[J] Design and Fabrication of Microelectromechanical Systems 126.801 Machine Vision 126.802[J] Foundations of Computational and Systems Biology 126.803 The Human Intelligence Enterprise 126.804[J] Computational Cognitive Science 126.806 Advanced Natural Language Processing 126.813 User Interface Design and Implementation 126.814 Database Systems 126.815 Digital and Computational Photography 126.816 Multicore Programming 126.819 Advances in Computer Vision 126.837 Computer Graphics 126.905 Large-scale Symbolic Systems 12Independent Inquiry Subjects 6.035 Computer Language Engineering 126.047 Computational Biology: Genomes, Networks, Evolution 126.100 Electrical Engineering and Computer Science Project 126.111 Introductory Digital Systems Laboratory 126.1151 Microcomputer Project Laboratory - Independent Inquiry (CI-M) 156.129[J] Biological Circuit Engineering Laboratory (CI-M) 126.1311 Power Electronics Laboratory - Independent Inquiry (CI-M) 156.141[J] Robotics: Science and Systems (CI-M) 126.161 Modern Optics Project Laboratory (CI-M) 126.163 Strobe Project Laboratory (CI-M) 126.170 Software Studio 126.172 Performance Engineering of Software Systems 186.182 Psychoacoustics Project Laboratory (CI-M) 126.805[J] Foundations of Information Policy (CI-M) 126.806 Advanced Natural Language Processing 126.811[J] Principles and Practice of Assistive Technology 126.819 Advances in Computer Vision 126.905 Large-scale Symbolic Systems 12

Underrated post.

mitpress.mit.edu/sicp/sicp.html
racket-lang.org/ use #land sicp

Or be a cuck and use python.org/ which there's a million tutorials for. Use Python 2, because even PyFags don't use Python 3.

spoken like a true retard who doesn't even use the language.

Fixed.

Python is great if you love importing twenty libraries and then writing a few lines of code to tie them to each other. Or if you find your software just runs too fast.

Python 3 is great if you love breaking compatibility with everything in the name of autistically making things in your language "consistent" instead of "intuitive".

LISP does what Python does and it does it better. You don't learn anything from coding in Python, because all the actual work is done for you and hidden from view. Everything I do in Python is done as a prototype, and then immediately ported to C.

How in the flaming fuck is dividing two integers and getting a FUCKING FLOAT in return consistent????

lmao, yeah, you're not working on anything important in your lifetime.
integer division is //.

There's a lot of things wrong with that, but it has everything to do with Python's design choices and not my argument.

You aren't explicit about what data type variables are, which means Python learners don't learn their data types. Additionally, you might forget what data type something is. Worse, it could change to a different data type later.

It also shows how trying to automate stuff instead of just trusting the programmer to not screw it up ends up screwing things up. It makes assumptions that might be true most of the time, but when it's wrong you not only might not know why, but you might not have an easy way to fix it.

And then you just end up with fifty different ways to do everything, all with slightly different names, when you could have just used another language to construct the way you wanted things done in the first place.

And don't even get me started on defining Classes...

No shit, faggot. I know you can do it. The point is that it ain't consistent at all.
If I needed float division I'd divide floats. If I divide ints I expect an int in return. Like, you know, in every other fucking language.

/: float division
//: integer division
Thus operation is determined by the operator instead of the operands.
So it does things differently but it makes perfect sense to me. The other way also makes perfect sense to me. If something can be done in two different ways it doesn't mean only one of them can make sense.

I thought python prides itself on the fact that there is only ONE way to do things. IIRC this was to set it apart from perls TIMTOWTDI approach

That assumes "one way" has to be consistent across major versions.

I meant two ways in programming languages in general. Python 3.x has one way (operator-based), other languages have another one (operand-based).
The operator-based one makes possible stuff like this: >>> 1.3 // 0.52.0

That works well enough in statically typed languages like C, but Python is dynamically typed. If I write a function f I probably want f(2) to do the same thing as f(2.0). In Python 2 that means I find myself aggressively converting numbers to floats or ints before dividing them because they might not already be the type I need as the answer, but Python 3's way lets me concisely write what I want to do.


Float division and integer division are different things. That's why they have different ways to do it.

Why not do it the way perl does it?
stupid python

I just explained. In a dynamically typed language it's common to require a certain return type for division without having an implicit guarantee that the operands have a certain type.

You could do it the way Perl does it. Python 2 did. Python 3's way is better.

python is better because i say so
back to /r/python with you

No, I said it's better because in a dynamically typed language it's common to require a certain return type for division without having an implicit guarantee that the operands have a certain type.

You wouldn't happen to have any counter-arguments, would you?

Let's say you want to get the number of whole Xs that could fit into a Y, you do "Y // X". Now let's say you want to get the number of Xs that are needed to fill the whole Y, you do "Y / X".
As you see, you don't want to worry about data types at all, the code works the same way whether X and Y are ints or floats, or mixed. Your code is based on what you want to do and not what data types happen to be passed to that piece of code.
That makes far more sense to me in a language like Python. But it would not make sense in a language like C.

def divfloat(x, y): return x / ydef divint(x, y): return x // y

Those are different things. You can tell because divfloat(2, 3) != divint(2, 3).

Learn what semantic versioning is user.

It was just explained to you multiple times how it's different and why it's different and in which contexts you would use one over the other.
Are you retarded?

Don't do it man, you are about to sell your soul to the devil for pennies. Can't even use that shit here anymore. Staph, please. Do not ruin whatever shitty life you might or might not have. :)

Except when it is a complex division. Or a decimal division. Or a rational divison. Or a path concatenation.
Yes, if you choose one way and consistently stick to it.

Hey.
Fuck you.
I only use Python 3. Fuck your obsoleted version without a proper separation between text and binary strings.

Nobody mentioned that math.sin(theta) expects Radian input. That's because Von Rossum thinks he is clever, and for no other reason.

Why no math.sinr(theta) for the rare radian user? The default should have been decimal degree input.

SICP is not about the language it's about how to conceive your program.

What is guile

I personally need to use the goniometric functions in the math module with radians far more often than with degrees. It makes more sense for the things I personally happen to do. Degrees are more useful for most use cases.

But Python originates from an institute for mathematics and theoretical computer science, so radians were definitely the better choice at the time they were chosen, and breaking backwards compatibility over this isn't worth it.

Why not math.sind(theta) for the degree user? Since math.sin(theta) is already used by people assuming radians.

I'd be fine with this. It just seems silly to force me to convert to radians using the standard library.

I began with 3 programming languages, Java, C, and Python 3. You should try a few languages at first and see which is easiest then stick with it.

Java was really confusing and tedious
C was better than Java but not very user friendly
Python was the easiest to learn because it's simple and very user friendly

GOTO considered excellent! Party on!

Maybe I'm just in a bad mood, but you probably don't have what it takes.

I say the same thing to anybody asking, "How do I learn how to play guitar?" It's just too easy these days; there has never been more learning tools available for beginners, more tutorials at your fingertips, full color charts, diagrams, brain-dead simple examples, and personal testimonies. At the end of the day, despite all the hand holding, there will be long hours alone between you and the keyboard/instrument/whatever. And I just don't see it in you, user. Prove me wrong.

Go grab a well-writen textbook on the language you want to learn, and go through the chapters one-by-one, completing some of programming exercises(many of them are redundant). This is what 90% of programming courses do. Then go on github and browse the projects you want to contribute to, and send your commits.

opinion discarded

Get out faggot

It needs to know it's not welcome here.