4 ms·
I'm a fellow CS student, but I'm a bit deeper into the curriculum. As a Junior, I'm just now learning other languages in class. I see those first two years as s
by ahlatimer 17y ago
I'm a fellow CS student, but I'm a bit deeper into the curriculum. As a Junior, I'm just now learning other languages in class. I see those first two years as something necessary. It's fairly trivial for me to sit down and read most OO languages now that I've been taught Java for two years in college (plus one year in high school). After learning the syntax, it's far easier to take apart those concepts that they're teaching you and apply them to other languages. Implementing a linked list, for instance, is fairly trivial from one language to another, but you have to fully understand the concept of a linked list before you can implement one in multiple languages. I assume that you still have a stumbling block when it comes to parsing the language, and you're missing out on the concept.
I don't necessarily believe you should keep chugging away at C/C++ until the language kind of disappears and you're left staring at the concept, but if you jump from language to language hoping one will open up things for you, I think you're walking the wrong path. My suggestion is that unless you fully intend to truly learn another language, you should stick with C/C++ and just progress with it. Once you are really comfortable with it, move on to something else. Trust me, once you do have that first language under your belt, the others come a lot more easily.
If you really do want to switch to a different language, I would suggest Python. I learned Python the summer between my Freshman and Sophomore years, and I felt that the language gets out of your way a lot more than Java (the only language I really knew before then). I think Lisp or Haskell might be a bit too much of a stretch from your C/C++ background. I've heard programmers that have been programming for years stumble over Lisp. It's a different way of thinking, and if you're just trying to broaden your horizons, you should be able to do that without learning a different way to think.
I'd also fallow the advice of some of the other people on here and actually build something. I've had a lot of fun doing web development with Ruby on Rails. Ruby's a great language as well, but I found it a little harder to parse coming from a C++-like language than Python. I've heard great things about Django, so maybe you could try building a web app in it?
- ramidarigaz 17y agoI'd forgotten Django. That sounds interesting. I did enjoy Python when I used in in Highschool, and I wouldn't mind learning more. About your other point, with sticking to C/C++ until the language disappears, I think I'm just afraid I'll get stuck in that paradigm, and if I don't broaden my horizons now, I'll have a hard time later on. You may have a point though. I'll think about it. Thanks for the advice.
- sketerpot 17y agoI agree that you should broaden your horizons. It gives important perspective, and makes your mind a lot bigger. There's more than one way to do it, of course, but here's a sequence of languages that I would recommend: Python: this will teach you to program at a higher level, and the libraries will make it easier for you to get into web programming or GUI programming or simple game programming or any other thing that excites you. That's what it's all about, when you're learning: do something that excites you, and you'll learn faster. Python has a very low barrier to entry, so try this first. Lisp: once you know Python, you're not going to be bowled over by things like garbage collection. But you can still learn a lot from Lisp; if nothing else, it can give valuable practice with recursion and metaprogramming and the idea of a read-eval-print loop. It's a cool and fun language. Haskell: this one is kind of difficult to learn, which is why I recommend learning it after you've got Lisp under your belt. A lot of advanced computer science stuff tends to debut in the Haskell community, and the average intelligence of Haskellers is pretty shocking. It's also a neat language that you can do cool projects with. If you can learn these languages, I guarantee that you will be able to shift paradigms a lot easier than people who coasted along with the standard trio of C, C++, and Java.
- xenoterracide 17y agoI think it depends on your 'project' as one person said. if you want to write systems software, or desktop apps C/C++ is a good route, however if you want to write Web Applications it's not, you should pick a scripting language. Pick the language for the task first then on preference. so like one person said python, php, perl, ruby, coldfusion are all good choices for web development... you just pick one of those if that's what you want to do. C/C++/Java(C# Windows) are all good for application developement. C is good for Systems development. Perl/Shell is good for scripting.
- ahlatimer 17y agoI don't think you have much to worry about if you pursue C/C++ right now. The paradigms in C++ carry over to Java and other OO languages pretty easily. When I said it's a lot easier to learn the second language after learning your first, I meant it. Once you get one language down (and I mean actually get it down), the concepts pass from one language to another fairly easily. From there, you're just learning syntax and some of the oddities of the language of your choosing. It took me probably two years to really learn Java, but I learned Python in 6 weeks. I was able to sit down and be productive in php after reading about it over a weekend. Ruby (on Rails) took me about a month to learn. COBOL was probably a week. Now I'm learning C and Assembly without really being taught much C and Assembly, just the concepts behind them that differ from what I'm used to. My point is, I stuck with Java for two years until I really got my head around it, then I moved on to other languages with relative ease. I can only imagine that becomes easier with time, not harder. I definitely think it's a good idea to learn other languages, but what, exactly, is your goal? Are you trying to understand CS concepts better, or are do you just want to learn another language?