Could someone please explain or provide a link for letting me understand the various languages out there like ruby, python and their utility. I really want to start learning a language this year.
Thank you
Many years ago a young man called Hugo decided he wanted to learn a foreign language. It sounded interesting, his friend Tom told him it was pointless but Hugo decided to try anyway. He picked up some books on the french language and begun his journey. After a while he began to struggle, he had no one to speak french to which made it pretty boring. What good was knowing how to ask where the Eiffel tower was when you weren't in france! Hugo gave up and felt depressed for a few weeks until he won the lottery. I hear he now employs a servant to speak french for him. Good old Hugo. I know of another young man called Pascal who was in love with a pretty girl called Ada. She was so pretty that all the Bigwigs in the area bought her expensive gifts like fancy jeans and arc reactors. Adas friend Julia told her she was whoring herself out for gifts but Ada was all like "No its Cool". Pascal desired Ada desperately and although he had no money he did know that Ada was originally from France and wanted to go back there someday. He decided to play on Adas desire to see her homeland as a way to entice her into romantic relations, such is often the way with true love. He studied hard but Pascal was infuriated by the language, "what the hell is all this gender based stuff, how the hell do you conjugate this stuff. Why is a door male and a doorway female, who the hell decided all of this crap". Only his desire to get all up in Adas bistro kept him focused. Once he was able to make basic smalltalk in french he decided to ask Ada if she wanted to get a cup of coffee or a cool glass of cola. He did it with style, his french was perfect, even with a slightly Vendee accent. He smiled in triumph as Ada stared at him, stunned by his linguistic prowess. Ada said "eww no friggan way, like oh ma gawd get away from me you german freak". Such is the path that true love takes. My point with all of this nonsense is that learning a programming language is a common desire but one that wont carry you through. What you need is a goal to sustain you. I am able to program in the following languages: C#, VB.net, javascript, c, cPlusPlus, perl, python, sql, powershell and a whole bunch of other ones that I have played with over the years but those are just tools that help me build what I want to build. I don't think about languages so much as capabilities, even for people starting out with programming this is important to understand. There are thousands of languages (enough for me to compose a silly story with their names!). Each of them are fit for different tasks, some superceed others which further complicates the landscape for newcomers. My advice is pick a little project. Maybe a web page which will need HTML, CSS and javascript. Or maybe you want to write a commandline application that does something for you. One of my first programs processed a CSV file and extracted some values I needed. Instead of a task taking me hours it brought it down to seconds... I dont even remember what I wrote it in because in a way it doesnt matter, what I do remember is the time it saved me to do something much more fun. If I had to recommend a language for beginners i'd start with C#, but encourage them to checkout javascript too as those 2 languages are very popular right now and are going to see even more growth in coming years.
WOW sir, this is truly fantastic. I have basic knowledge in HTML and CSS which I would definitely work on further and as suggested by everyone would pick up a language and just start with it without having so much doubt about it which is actually wasting further time. Thanks a ton.
short version Pick a high-level language and learn it. It doesn't matter which one. Python is good. Google is your friend. Here's a tutorial. If you have questions, Google. If you can't find an answer, ask someone, there are tons of forums out there. long version I like to think of languages in "levels" of abstraction. High level languages let you focus on getting your work done, and not worry as much about the details of how it happens. The tradeoff is that they're usually slower and less expressive. But that won't matter for learning. Lower level languages give you more control over the hardware, but much more can go wrong, and it's much harder to get right. Finally, kind of a tangent, functional languages offer a different kind of 'high' level. Functional languages give you much more expressibility, and help you write things like large, stable systems and avoid duplication. But the vast majority of code out there is in imperative languages, not functional. So I wouldn't worry about functional programming until much later. Python, Ruby, and Javascript are good examples of high-level languages. They're easy to pick up to learn the basics of programming, without encountering incomprehensible errors. Java, Go, C++, and C# are good examples of somewhat-low level languages. They'll teach you important things you need to know, like pointers, memory management, and parallelism. C and Fortran are very low level. You'll probably never need to be that low – unless you want to play with hardware like Arduino – and C won't teach you much that you can't learn from C++. I'd recommend Python or Ruby to start. I'd shy away from Javascript. It's too complex, too easy to learn terrible habits. Even if you want to do web stuff, I'd suggest Python first for good programming habits, then pick up Javascript. Once you feel like you've learned the basics of programming and how to do stuff, go learn Java or C#. Once you have a handle on how they work, C++. By that time, you'll know enough to pick your own functional language, or whatever else you want to learn. Alternatively, if you learn Python and feel like you can do everything you want, just stick with it. Unless you're a professional, you can probably do everything you want with a single high-level language. longer version Just kidding. Go learn Python.
Very detailed, insightful post. I think it's important to add though, that Java and Javascript are very different languages, just incase JethroTulli has any confusion.
I'd also say add that if you have some further plans to study programming to get your skills to more advanced level, starting with a low-level language may be better. It gives more solid foundations, because it doesn't hide things like high-level languages do. That's from my experience. In college our first course in basic programming was Pascal (which is low-level). I'm happy it was that way. If you want learn only practical programming, you'll definitely be good with a high-level language like Python. It gives you a quick start, as you can accomplish practical tasks much easier and more quickly.
Hey, thanks a lot for the insight. I would be starting with Python as it goes quite popular on other forums which I checked as well. If I have any problems, I know who to contact now though :D
This is one of the best links I know to learning Javascript. I would recommend learning Python if you want to be on the programming side as it will teach you the base concepts behind programming that will apply to every language. That said, with Node.js and more javascript frameworks than you can imagine, it's fairly useful these days. http://javascriptissexy.com/how-to-learn-javascript-properly/ My biggest piece of advice is just go do it. Just fucking do it. Don't get wrapped up in researching the differences between languages. Skip sections of the tutorial if they bore you. Figure out what you want something to do and then figure out how to build it and make it happen. It's much, much easier to learn something when you have a specific end goal to complete. I learned much more building a couple javascript function that allowed me to make a bar animate left and right as users clicked each button than I did in my semester long Javascript class. What the class did allow me to learn was why things are they way they are. But, if you are like me and quickly fall into boredom or feel like learning is a grind, it may better to learn how to do things and afterwards learn why it works that way. You will also retain the whys better when you have those "ah ha! that makes so much sense now!" moments rather than the moments of "I sorta understand why this will potentially be useful in the future".
100% agree. This applies to most things in life, too*. If you want to start doing something new, you have to do it. Time spent researching is time not spent practicing, and at an early stage, the gains you'll get from practice are much greater than the gains you'll get from picking the right tools**. Besides, making mistakes teaches you a lot, especially in the early days. Quoted again, because this is essential. If you don't have something to use it for, you won't be successful at learning a programming language. I first learned to program when I was 16. I didn't do any more until I was 20, and I'd forgotten all of it***. I've probably used 10 different languages at one time or another. I'm only fluent with two right now, because those are the ones I'm actively using. I keep thinking "Hey, it'd be cool to learn Julia", read a couple tutorials and then forget everything I've learned because I haven't got anything to use it for. Programming's an active skill, and if you don't use it, you lose it. *Not open heart surgery. **Speaking of which, @JethroTulli, have you picked a text editor yet? Don't spend too much time thinking about it, just get one and really learn it. If you're on windows, Notepad is pretty basic, but it's easy and will work for a beginner. When you want something more advanced, give Atom a try, or Eclipse if you want heavy-duty features. ***I'm sure some of the principles stayed with me, but the language itself (Perl) was gone completely from my memory.My biggest piece of advice is just go do it. Just fucking do it. Don't get wrapped up in researching the differences between languages. Skip sections of the tutorial if they bore you. Figure out what you want something to do and then figure out how to build it and make it happen.
Figure out what you want something to do and then figure out how to build it and make it happen.
There are lots of little differences between languages. They all have their niches, and there are good and bad points about all of them. The thing is, you can write a program to do anything[1] in any language you choose. Some will make it a bit easier, but the underlying principles are all the same. If you want to learn a language, then it's more useful if you tell us what you want to do with it. The general advice for beginners these days is to go with Javascript or Python. Unless you want to do web development, I'd recommend Python to start with. http://www.codecademy.com/tracks/python [1] Technically correct, the best kind. You can express any algorithm in one programming language in another. The language itself may not have features to allow for certain applications. You can't write a functional hardware driver in Javascript, but you could write a program that simulates one.
Thanks Just one question, do you think the course tracks on CodeAcademy suffice for good learning of the language or it should be done through other professional courses such as an outside academy or a paid course on Udely?
Try Coursera * Introduction to Python - starts in February
* Introduction to Systematic Program Design - Part 1 - which I think is still open to join and which also teaches very solid practices to designing code. Or Edx * MITs introduction to Computer Science - which uses Python and starts in Jan
Thank you. I would definitely sign up for these.
I haven't done CodeAcademy, so I can't say. It doesn't really matter though. From your posts, it sounds like you're focused on the language part of programming. The language isn't really the important part though. If you're already a programmer, learning a new one takes very little time. The hard part is learning how to reason about programs & breaking down a problem into something that can be expressed as a program. This is something you need to learn by doing. Unless it's got the world's best homework assignments, I wouldn't spend any money on a basic programming course. All the information you need is freely available. And if you go with Python, keep in mind which version of it you're using. There are small but significant differences between 2.7.x and 3.x, so be aware what the tutorials you're reading refer to (if you see 'print("text")' in it, it's python 3. If you see 'print "text"', it's python 2) . Both versions are widely used, but I think 2.7.x is still more popular.
To be honest, I have done my graduation in business and management so I have very little knowledge about the detailed side of the languages you have mentioned. That is why it is a little difficult to grasp the discussion happening here. So sorry for that as you guys have really put in a lot of insight and detail in here. Would there be any website or place you suggest which might clear this for me better, or any book you recommend me to read?
Can you be more specific about what's unclear? What's your end-goal for learning to program? Just about every beginners guide to programming is going to cover the same topics. Most will start with printing text to the command line, then introduce variables. Maybe they'll show you how to get user input next, or they'll go straight into conditionals. Then it's loops, functions, objects, libraries and file access. The principles are the same for most languages, so it doesn't really matter which one you choose. Don't worry about books or websites. Pick one at random and give it a try. If you don't understand it or think it's bad, pick another and start again. Yes, some are better than others, but that doesn't matter so much at the beginners level - the topics covered are all the same. You have to start somewhere, so go install Python and read some tutorials. That's all there is to it.
There are some good suggestions in here, I agree fairly strongly with what both rob05c and Dendrophobe have to say.
Only problem with Python is that it might seem quite daunting to newbies, also nobody seems to mention Lua. Lua is like Python and Javascript combined, it was also very helpful to help me understand how programming languages worked. Lua can also be embedded into many other languages like Java and C, which is why it's the most used scripting langauge for game programming Although not very powerful on it's own, it is super easy to use and makes use of keywords instead of special characters. I had great fun with Computercraft on Minecraft Faction servers being hired into the powerful factions as their programmer :D
I didn't mention Lua for a couple reasons. #1 its Objects are abysmal, and Object Oriented programming is important to learn. #2 everything is a map (table). That's fine for scripting, but not for learning. Learning data structures is important. #3 its library support isn't great. It doesn't need to be for its primary purpose, embedding. But learning, at some point you're going to want to write a GUI or web server. Lua has 3rd party libs for these, but they're not nearly as common or well-supported, and hence not easy. Lua is a great language for embedding (and disconcertingly fast), but it's not going to teach you a lot of fundamentals you really need to know. That said, if you want to write a WoW or LuaCraft thing, by all means, teach yourself Lua and do it. Having fun is the best way to learn. I agree, both Python and Ruby have a lot of features learners don't need to think about. But I'm not sure there's a better language. Basic comes to mind, but Basic has some dreadful stuff. Goto? On Error Resume Next? Do not want. There's a reason VB has such a bad rep. Alternatively, you can just dive into Java. Alternatively, start with the SICP and Scheme and get a reputation as a misunderstood genius (I'm kidding – don't do that).Python is that it might seem quite daunting to newbies