<p>I'm a rising junior and am just now wanting to start learning some programming languages. I'm wondering how long it will take me and how many hours a week I should dedicate to learning different languages. I want to learn C, C++, Java, and SAS. Is this doable in just two or three years or am I being unrealistic? Sorry if any of this sounds stupid, I am VERY new to computer science, but I'm really excelling at formal logic so I feel like I should be able to handle it.</p>
<p>Yes it’s very doable to learn the basics. Once you understand the approach to computing it becomes easier to pick up new syntax. The most challenging on your list is C and C++ … but once you know one the other is virtually the same. I’d suggest you stick with C++ for scientific. Java and web programming is a must nowadays and a good place to start for a beginner. If you are like other kids I know you probably have some HTML experience and understand scripting. SAS is special purpose scripting and lower priority.</p>
<p>It’ll take a few months to learn your first programming language. If you’re learning a second (or 3rd, 4th, 5th, etc) language, it’ll take around two weeks.</p>
<p>The challenging and time consuming part is that there are so many languages, operating systems, databases, etc out there that companies want you to know, and most of them aren’t taught at school. I’m talking about stuff like .NET, Ruby on Rails, PHP, C#, MySQL, Matlab, Perl, Python, LaTeX, and so on. Take a look here:</p>
<p>[List</a> of programming languages - Wikipedia, the free encyclopedia](<a href=“http://en.wikipedia.org/wiki/List_of_programming_languages]List”>List of programming languages - Wikipedia)
[List</a> of operating systems - Wikipedia, the free encyclopedia](<a href=“http://en.wikipedia.org/wiki/List_of_operating_systems]List”>List of operating systems - Wikipedia)
[List</a> of I.T. Certifications](<a href=“MC MCSE: MCSA, MCSE, MCITP, MCTS, CCNA, A+, Network+, CIW, and Linux Certifications”>List of I.T. Certifications)</p>
<p>Understanding - 1-2 weeks
Proficiency (syntax) - 2 weeks
Overall Proficiency - around a month</p>
<p>I recommend starting with Python/Lua
Concepts are transferable between most of these languages.</p>
<p>Why do you want to learn all of those languages? Only one of those will be used in any given project. I’ve never heard of SAS. Just learn one and then if you’re going to do a project in a another language pick it up as you go. Java and C are interchangeable (i assume you mean C#), while you might needa buy a book for C++.</p>
<p>Pinata: Why would you assume he means C# when he says C?</p>
<p>Thanks everyone for your responses. I feel much more confident now.</p>
<p>Pinata, I am interested in technology innovation and scientific computing, although I can’t say right now exactly where my career is going to go. I have researched job postings in those areas and those are some of the languages that recurringly pop up on the required skills section (although obviously not always at the same time).</p>
<p>It is sort of annoying because one job posting will ask for C#, and then a seemingly similar job requires C++, and then another job will require C. I was getting worried cause I was thinking: How the hell am I supposed to learn all these different languages in order to be competitive and have options in the job market?</p>
<p>Pinata, SAS is a statistics data analysis software program, and I am planning on majoring in statistics (minor in CS). There is an entire career field for SAS programmers.</p>
<p>If you’re interested in statistics, you should also plan on learning R.</p>
<p>The fundamentals of programming will remain mostly the same between languages, once you become skilled in using one language, then you’ll be able to pick up other languages. It’ll take a while to become skilled in using new languages, because there will be important differences (not just in the language, but in the libraries that are available as well as the development ecosystem), but it won’t be like learning programming for the first time.</p>
<p>I haven’t been up to date on the programming field for quite awhile, so I’m not sure how useful C# is compared to Java. But it is good enough to just learn one of them, unless you are becoming a software engineer. SEs will learn more than one for a wide variety of reasons, but if you are in any other field or you just want a hobby or even a skill, you could just pick one, focus on it, and be fine. Then later you can learn more that will be suitable for further reasons.</p>
<p>Java is very good to learn. It’s widely used and serves a wide variety of functions in software development. You can build almost anything with Java.</p>
<p>I don’t think C# is interchangeable with Java. They are very similar, but you will still have to learn and deal with the differences. And I don’t even know if there are well working versions of .Net for many of the mobile devices such as iOS, Android, Symbian, etc. What if you wanted a program to run on an iPad, Android device, Windows Phone 7, or other devices?</p>
<p>I’d suggest you to start with C or C++. C/C++ is the most widely used and the most basic of all programming languages and is very very useful.
That being said, once you learn any programming language and understand how things(i mean syntax,codes, and stuffs) in programming languages work, it wont be tough for you to learn a new language.</p>
<p>I’m a high school graduate and will be attending a college this coming fall for Mechanical Engineering and I’ve already completed learning C and C++. And currently I’m learning MATLAB.</p>
<p>You might find a programming language a little difficult in the beginning but as time passes, you will find it rather interesting.</p>
<p>Gud luck!</p>
<p>Learn Lisp with the book Land of Lisp. It’s fun.</p>
<p>If he wants to do statistics work, languages like Java/C# will be among the less useful choices.</p>
<p>Also, this is already turning into a languages thread where everyone just lists their pet language. We should come up with some sort of progression that allows you to get into programming quickly/easily.</p>
<p>Python - start with this; it doesn’t have the cumbersome syntax of some other languages but is also very powerful, so it’s both a good teaching language as well as something you can do work with. It’s also increasingly being used in statistics work, so you’ll be able to do cool applications with your very first language.</p>
<p>C/C++ - After learning the basics of program control/flow, you can now learn some of lower-level stuff (like dealing with memory management). C++ is a natural extension of C, so you can learn it almost at the same time.</p>
<p>Java/R/SAS - Take your pick; at this point, you’ll have a few languages under your belt and can see what might be a good option to go with.</p>
<p>Edit: Does anyone else have any thoughts on this? Also, if you need help finding some good learning resources, just ask.</p>
<p>The following may contain personal and subjective opinions. Needless to say, they may or may not be appropriate for everyone. I want to make a long post so similar questions can be answered by providing a link.</p>
<p>First let me start off with this image. Please look at it.
<a href=“http://fyeahcomputersciencemajorpenguin.■■■■■■■■■■/photo/1280/4346885661/1/tumblr_lj4igxcniU1qhjhdt[/url]”>http://fyeahcomputersciencemajorpenguin.■■■■■■■■■■/photo/1280/4346885661/1/tumblr_lj4igxcniU1qhjhdt</a></p>
<p>I am a sophomore in computer engineering. I dont have a software job so I do not really deal with programming every day. But I am pretty good in Python, C++, and Matlab. I am still learning Java. </p>
<p>---- Prior to College (elementary school high school) -----</p>
<p>I started out with HTML. HTML is not a programming language, but we can always treat it as one. It taught me how to create and design a webpage. At that time CSS wasn’t that popular at all because it just came out. I was in my 3rd grade by the way. You will be surprise how helpful knowing HTML and CSS can be in the future. In particular, you may be interested in working with a web framework written in Python, C++, or Java (or PHP, or Ruby, etc).
For years I was hopping from one thing to another (PHP, HTML, C++, Perl, etc), and until I hit my senior year I finally got my belly together and wanted to learn a language seriously. I picked C++. </p>
<p>---- College -----</p>
<p>I had my first programming class in my first semester of college. I didnt need it. Its an elective course, but I took it with a friend anyway because I really wanted to get to know computer science better. The professor was really laid back and he didn’t teach us how to program. He told us to google the syntaxes and play around with them. Later in the class we learned Python for a few weeks and we had a final project in Python. Fun! </p>
<p>In that class I learned to program in both Matlab and Python. Although I learned C++ over the summer before my freshman began, I didnt really get what programming is about until I hit my first required programming class. Lets called it CSC 102. 102 is required for all engineering students. It is taught in C++ (another section is Python, however). The professor was very nice too, but he doesn’t go too deep. I actually had time to investigate different technique in that class, because the work load wasn’t so bad. But some homework did take me an hour or two to get the right result.</p>
<p>Now I am taking my fourth computing class - software design (well CS major goes on with software engineering… not important at all in this discussion), and in software design we use Java. The class before this is Data Structure, and it is taught in C++.</p>
<p>From my experience (as a student), one has to pick his or her first language carefully. Everyones learning ability is different. What is true is that one can pick up another language with confident if and only if one has learned its first language correctly.
Take your time. You are still very young. Unlike me - I am becoming a junior next semester. I am running out of time to enjoy programming. Should I have known that programming would be part of my potential study I would cherish my time back in the days. If I actually did the right time back then, I would have at least eight years of programming experience prior to college.</p>
<p>---- So what is the right language for you? ----</p>
<p>I don’t know. But personally, I think C++ is better than Python.
- The philosophy of the two languages is very different.
a. Python = minimalistic; more shortcuts than C++, and most of the time you just need to import the right modules.
b. C++ is much older than Python. It comes with STL (standard template library), but beginners would not use it anyway. Thus, you would end up writing almost everything yourself.</p>
<p>Some of my classmates had troubles going from Python to C++ just because of that. </p>
<ol>
<li><p>Syntax rules are also different
a. Python? No Semicolon, no braces like C++. No main function.
b. C++ follows the C-style.
As I had tutored my classmates in 102 and had taught high school students to program in C++, I learned that C-style syntax really throw them off, and missing semicolon, braces are the most frequent errors during compilation.</p></li>
<li><p>Data types, defining variables, etc
a. Python is an interpret language. In general, Python interpreter can figure out what type of data you are providing. I wont get into the technical side of this, but as I said before, IN GENERAL, you dont have to worry about integer (int), double, floating, etc.
b. C++, however, you do. Defining the right data type and how to manipulate them look challenging to starters.</p></li>
</ol>
<p>There are many reasons why one would recommend Python over C++ to beginners. But all the obstacles will pay off. I recommend learning C++ before any other language. Cs printf, sprint arent really difficult. In a way I can relate them to Pythons . Anyway</p>
<p>I take my time to learn things. One day I asked people online for help because my loop didn’t work correctly. The helper told me to trace my output. I spent the rest of my night tracing the problem on papers… you can see that in the following link
[Untitled</a> Document](<a href=“http://www.i3physics.com/cplus/sentinel-solution.html]Untitled”>http://www.i3physics.com/cplus/sentinel-solution.html)</p>
<p>So which language is the best?
It really depends on the application. For example, last time I was counting money (bills, coins). I wrote a short program in Matlab because I can easily do vector algebra on Matlab. Say I have ten $1 bills, and twenty $0.25. In C++, Python, or Java, one has to write number<em>of</em>quarter * 0.25 to calculate the total of amount of quarter in dollars. I need to do that too in Matlab. But summating up the total (of everything) would require an additional line. Of course, if you know programming well, you can reduce unnecessary lines too (I can do this too). However, I dont like typing too much. So in Matlab, I can sum the vector with a syntax sum().</p>
<p>— Finally remark —</p>
<p>Programming is a very small subset of your computer science education. In fact, writing code is a very small subset of a software developer’s work cycle. They spend most of their times debugging, writing comments (documentation), and planning. So unless you really like sitting in front of a desk tracing errors for hours (sometime you really do spend a few days just to find out), then programming is not going to be your candy. But don’t be afraid. Everyone has to go through this cycle, mentally.</p>
<p>Mainstream languages like C++, C, Java arent enough. Sometime you will be surprised how useful knowing languages like Fortran, Lisp (someone has mentioned it already), Hackshell, Bash . Matlab would probably be always there in your statistical career.</p>
<p>Start study easiest language first. I think yo start with C# or vb.net becuse it is very easy to learn and bothe have Object Oriented basics. For c# and vb.net there is a good development environment (Visual Studio) provided by microsoft , so beginners can easy to pick up. There are lot fo free materals available on internet try [C#</a> Tutorial , C# Help , C# Source Code](<a href=“http://csharp.net-informations.com%5DC#”>http://csharp.net-informations.com) , [CodeProject®</a> - Your Development Resource](<a href=“http://www.codeproject.com%5DCodeProject%C2%AE”>http://www.codeproject.com) , java2s.com etc…</p>
<p>Dell</p>
<p>Learning a language is a life long process, but sure I know what you mean.
Start with C++. It is in my op the best language to start with. You will learn about many important concepts that some other languages take care of (eg dynamic memory etc). It is important to understand these concepts. C++ is also very commonly used.
Also learn a scripting language. Python perl etc. Good to have C++ and a scripting lang. </p>
<p>If you really into numerical methods and analysis something like FORTRAN (old school huh) might be useful. You will learn matlab fairly easily after all this and its something you can easily pick up in school. </p>
<p>Theres a reason why so many school start their engineers with C++</p>
<p>Language, shmanguage.</p>
<p>Learning the basics of how to do basic, beginner-type programs in a language ought to take a month if you stick with it (get one of those “teach yourself C in 30 days” or whatever books). But once you try writing actual programs for assignments you’ll find that knowing the language is not the hard part. If you forget syntax or something you can just look it up. No, the hard part is coming up with the faster algorithm or creating the right data structure.</p>
<p>A typical CS education at a 4-year university usually goes like this:</p>
<p>Class The First: learning how to write simple programs in C++ or Java, using loops and functions and variables and basic (usually text-based) screen I/O and file I/O (usually just creating text files)
Class the Second: learning the basics of algorithms and data structures, using things like recursion, arrays, sequences, partial-maps, binary trees, to do things like, say, remove all HTML tags from an HTML file to produce a text file
Class the Third: learning the basics of creating classes and new types, sorting methods, etc.
After that you branch out into things like: pointers, more data structures and algorithm analysis, assembly language and systems programming, operating systems, formal language theory, etc.</p>
<p>Unfortunately, it takes a while until you are able to write “interesting” programs that are actually fun and useful, instead of just academic exercises to learn how to use arrays and pointers. So, learning a language: one month for the basics. Being competent at the cool stuff: a year or two.</p>
<p>Computing courses for engineering (other than computer engineering/science) and statistics majors may use MATLAB (note: GNU Octave is a free similar language interpreter that you can use on your home computer) due to its common use in those fields.</p>
<p>For computer engineering/science majors, the introductory courses vary in their use of computer languages, although the emphasis is on the computer science concepts, not the programming language.</p>
<p>For example, Berkeley’s three course introductory sequence uses Python (formerly Scheme) in the first course (structure and interpretation of computer programs), Java in the second course (data structures), and C and MIPS assembly language in the third course (machine structures). But the use of computer languages differs at other schools.</p>
<p>Some consider schools which use only Java in computer science courses to be doing their students a disservice.</p>