Hi, I'm currently a high school student (rising junior) and I really want to teach myself to code. It would be awesome if anyone here would tell me what or where to begin with, thank you.
\(\Huge\color{gold}{\star\star\star\star\star\star\hspace{5pt}}\LARGE\tt\color{orangered}{Hey\;there,}\hspace{2pt}\Huge\color{gold}{\star\star\star\star\star\star\star\star}\)\(\Huge\hspace{15pt}\tt\Huge\;\color{Blue}{welcome\;\;to\;\;openstudy!}\)\(\Huge\color{gold}{\star\hspace{1pt}\star\star\star\star\star\star\star\star\star\star\star\star\star\star\star\star\star\star\star\star}\) To start with, which language do you want to learn?
Since you posted in the MIT 6.000 place, I would think he wants to learn Python, which is a great place to start! =) There are tons of online courses in Python. There are also lots of things for Java, JavaScript, C, C++, and so on. I would stick to Python or Java, as they tend to be a little more forgiving than C or C++, and if you do pick Python, there are a ton of people here that have been looking at code for others.
Thank you for the replies! and yes as e.mccormick stated, I've heard that python is one of the basic languages that I should start with
Python is not just a basic language. That was one of the issues with the educational languages. As soon as people knew them, they moved on and that learning was only to be abstracted. For Java, there are basic languages based on Java, so moving to Java becomes easier and what was learned directly applies. For Python, it is used by major corporations in many countries and is practical for an individual who just wants to do a little more with tier computer. With that range of ability, it is not just that it is a simple language to learn, it is also a powerful one to use!
PHP is a fairly basic language, some don't like its syntax but it's very functional (Facebook uses it, in fact, but with a C++ compiler). It's more server-based. I wouldn't recommend Python (OR PHP) to start with, only for the pure reason that they're server-based. Python can't compile into a native application unless you use some (weird) things like this: http://shed-skin.blogspot.com/ I'd recommend starting with either native languages, or some web languages. Java is nice to learn. Not to hard if you already know another language, its like a mashup of tons of languages. C++ is a really great language, I really recommend it. Though it's not that easy to learn. Very honestly, I'd recommend you'd start with the web languages, like HTML, CSS, JavaScript. HTML (basics) is very easy, CSS (stylesheets) gets a little harder and JavaScript (advanced functionality) gets quite difficult. So its nice: they all build up on each other. https://developer.mozilla.org/en-US/
"I wouldn't recommend Python (OR PHP) to start with, only for the pure reason that they're server-based." "Very honestly, I'd recommend you'd start with the web languages, like HTML, CSS, JavaScript." Ummm... web languages that are all... server-based. So you would both not and do suggest server-based languages?
HTML, CSS and JavaScript are compiled on through the browser, NOT the server.
Well, I don't actually agree on starting with a specific programming language. Programming languages are a huge realm. You may not know what language you'll learn, because there's just too many choices. You begin with either a right one and move on, or terribly begin with a unpredictably complicated language and just quit, or even begin with the right one, but spaced out on how you continue because of poor basics. The third case happened to me, and now I'm in coding again, thanks to MIT! There are fields like mobile, database, native client, server-based, web, so many other stuffs to delve, just making one ended up being some confusion of choices. I suffered this too as well. That can--and hence should be--a second priority if you're to learn coding. Instead, you want to get a view about coding in general, you want to know how coding is like. And not the least: the basics, just to get the hang out of coding. Without the basics in your head, eventually you'll end up spaced out in your ways. If you don't have enough grasp conceptually, it'll be harder to learn other languages. There's no better option IMO. So that's why you're here at MIT 6.00, to basically get your fundamentals strengthened at this very moment, so that you can learn other languages more easily. There is no shortcut to me. But to make things simpler, they used the Python language. Parallel to what I said, in this course, every element in Python is not necessarily taught, but we just try to get the hang of and the basics on coding. I'm not really sure whether you want to just touch the surface of coding in general, or try out a language, or perhaps go passionate enough about digging a deeper ground. But to get the best experience for learning on how to code: master the basics first, and then decide what kind of field you want to be into. The basics will help you to learn many programming languages more efficiently. If you just try an easy way by learning a language from a tutorial, in the end you'll do things in a much harder way if you have no basic concept, yet. Sorry if I misstated something here, at least I tried my best to help this dude who just asked there. - Bas
Try using them on a client without installing a server... they do not work so great. Also, they fail the native applications thing because you can't compile them into anything. They just are. And there are portability issues, which is where huge amounts of web coding is directed at making things look as close as possible across different browsers on different platforms. I am not saying any of these are bad choices, just adding some down sides to complement the up, like you did with Python. In another post a while back I pointed out that one of the considerations in picking a programming language is long term goals. Most programmers know about five. Many start with three and just end up learning more over time. The three would be one learning language, one production language that is portable, and one script language or web language. They usually move on to pick up the script or web they did not know and end up needing something else. If the long term goal is web design, the JavaScript/HTML/CSS combo makes more sense. If you are talking game design for the web, those are also not bad because it heads towards HTML5. On the other hand, if the long term goal is Android programming, start with Java, it will get you there quicker. For Computer Science, as in the new name for Software Engineering, Java or Python are better choices.
@e.mccormick *cough* HTML5 *is* HTML/CSS/JavaScript. Just a newer version. And my point was that they're not a server language, and learning HTML, CSS and JavaScript don't need a server to function. And what do you mean that they don't work so well when they don't have a server? Microsoft and Blackberry now use those languages for compiling/programming mobile apps, as well.
@dumbsearch2 Yes, which is why learning them leads to it. Last time I tried working with HTML and CSS without a server, the results were exceptionally different than when on a server. I do not know why, but this has happened. Also, learning them without use of a server can lead to a misunderstanding of relative paths. As for the phones, usually people do phone development in an emulator... therefore a form of server. Oh, and I did a touch of JS when I did the HTML and CSS... not much. Just a hint. That was... a year ago? Something like that. I know that they have been migrating to the whole thing being more of scripting with HTML5... a move I disagree with, but for security reasons I am not a fan of browser based scripting at all. Anyhow, we are drifting off topic. All of your suggestions are good as suggestions. My point is that you can find a down side to any programming language. Most everything is one way or another based in C, but learning C is not exactly easy or a good place to start. C++ is friendlier, and still a bit to wrap the mind around, though I know people who have started with both of these! I started with ROM-BASIC and programs printed in the back of magazines (which took a ton of debugging) and them moved to C then stopped coding for years. Started again with Perl and PHP to get some things done and what I learned in BASIC let me move to those without much issues. Then I did not have a need again, so another break. Then I decided to really learn programming and started with C++ and VisualBasic. Now I am learning Python because it will help me do what I need. It is this sort of need driven approach I recommend. Find a long term goal and then see what languages are popular in that field. Pick a language that is as directly related to those goals but has a strong support base for introductory level learning.
Do the MIT OCW 6.00 2008 course. Watch the lectures, read all the readings, try all the examples in the readings and the lectures, explore the web for the topics presented in the lectures and readings. Python is a great language. The MIT 6.00 is mostly a computer science course, so you're going to have to bootstrap your programming skills
@bwCA Hey, bro. I think it would be better to take the 6.00SC 2011 course. SC means it's an OCW Scholar Course from MIT. The materials are more enhanced than the regular ones, but doesn't mean that they're a lot more intimidating as well, tho. I'm currently in the 6.00SC 2011 course, and the experience is more rewarding. ;)
I sort of agree with baskorol. The MIT OCW scholar courses are specifically designed for high school students. What ever you choose, come here for help!
Join our real-time social learning platform and learn together with your friends!