After c/c++ what should I learn?

5 points by yearsinrock ↗ HN
I had c and c++ in my 2nd year's CS semester. what programming languages should i learn after these.should i strengthen my skills in these languages again or should i try learning other prog languages?which ones are useful for web development? What if i wanted to develop a small website all by my own ,then which languages do i require to learn?

31 comments

[ 3.4 ms ] story [ 81.9 ms ] thread
Java is the language for a lot of web-based "portal" applications. You might go to a book store in the computer science section and look around for books on Java and web portals. This topic includes related technologies such as XML, and XSLT.
and how is ruby
Ruby is a nice language, its known for not being the fastest language, but its still very nice...its currently my favourite web language.

Or maybe even PHP? The problem with PHP normally is people jump in without any previous programming experience and say they have mastered it in 6 months - when in fact they know barely anything. You obviously have a good programming background and would use it properly.

I'm not sure why you're getting downmodded; Java is a fine language to learn, if anything there are a lot of interesting languages up-and-coming on the JVM, and it would be helpful to have an understanding of the Java language to fully appreciate them.

Some languages that are JVM specific today include Groovy, Scala and Clojure. I'm sure there are more. Beyond that, there is Jython and JRuby.

In addition, Java is a widely marketable skill. It's nice to be able to find work while you're a young programmer, even if it's boring stuff. People aren't always so fortunate as to be able to start a startup when they're young; sometimes they actually have to get a job doing crap work while they learn.

If you are looking for a language that will expand your programming horizon try Scala (closer to C/C++), Lisp or Scheme (both very different from C/C++).
Learn language which can be easily extended by c/c++, say python, php or ruby, so you can continue to improve your skills in c/c++ and learn new language at the same time.
Learn LISP - read SICP.
I would think more in terms of what you want to do rather than purely thinking about skills. Let your passion lead you. If you don't have a passion then you might be in the wrong program.

I knew exactly what I wanted to do before getting into the CS program at my school and I ended up dropping out to be a freelancer and work on my own projects. Not sure that was a good decision but I just couldn't keep focus on school while other things were calling.

That's just me though. If I were to teach myself "skills" then I would have bored myself silly. I just wanted to build things and the skills were picked up along the way.

If you want to build web applications then you should probably look at Ruby, Python or PHP. Ruby makes me happier than PHP. Python would probably be about the same but I flipped a coin and Ruby won. There are lots of other names being thrown around but as a freelancer the languages I mentioned were a better choice.

Pick one that's generally associated with web stuff. That's pretty much Ruby, Python, Perl, Java, and PHP these days. Take a look at all of them on the surface level to see what's interesting to you, and just pick one and go.

Given that you already know C and C++, I'd learn Perl, Python, or Ruby, since they're a very natural extension of C and C++ and can be used very easily in problem domains where you wouldn't want to use C or C++. Learning more than one of these may prove useful if you want to hack on a variety of different open source codebases, so whichever one you pick first isn't so important as picking one and having it in your toolbox.

this is a toughie to answer. it really depends a lot upon your situation. first, its always good to become more proficient with the tools in your toolbox.

i'm assuming that, by posting here, you're looking at web development. here are some languages useful for web dev: python, php, ruby, perl

if you're looking to expand yourself as a student and coder, consider looking into these: lisp, ocaml, prolog

if you want to graduate with a decent corporate job, take a look at these: java, pl/sql, cobol

I think it's a great thing you did some c and c++ as I only skimmed over c in class and mostly done all my classes in Java (writting a compiler in java - gah!). Did you like it? I have done a little c++ on my own and there is so much to learn I was overwhelmed by all the libraries you need to know if you don't want to be writing c in classes (boost , std, etc).

As for web language I love ruby (and rails as a framework) so I'm kind of bias but try learning python or ruby or if you feel like suffering (I find it too old school (I'm not trolling)) some perl (which as a huge community - CPAN).

Also, try looking at a functionnal language if you haven't in class (I learned Standard ML). It really helps to graps some concept that are harder to undertsand with `clunkier` languages.

I kinda went off track but hopefully this helps.

Scheme, using SICP. It'll stretch your brain.
Expand your mind, learn Lisp.
what do u exactly mean by expand u r mind?
I need to give you a lesson that is going to be far, far more valuable to you than another programming language.

If you want to go far in life, use words like "you" and "your", instead of things like "u" and "u r".

People will never focus on your linguistic skill for being correct, and they'll always secretly question your intelligence for using the latter.

And sometimes not so secretly, too. Good advice, good advice.
It is unlikely that you know C++ to a professionally useful depth from one semester. It's also fair to say C++ expertise is more employable, and in more diverse and interesting domains, than the dynamic languages.

As best I can tell Perl, Python, and Ruby are all practically equivalent. All equally suited to web development. Just pick one. I don't think it's unreasonable to claim that Perl is still the most likely to be professionally useful.

I never got the lisp propaganda. I invested some time with scheme and didn't get much out of it. Yes, I wrote macros and used call/cc. The most useful idioms are in fact already available and used in the so-called scripting languages. IMHO, your time is better spent completing good projects with rock solid libraries than futzing around with the language fetishists. Maybe there are some deep insights from Haskell I'm missing, but I seriously doubt it.

Learn the guts of an OS (preferably *nix). Build an OS yourself in an OS class if your school offers it. You'll be surprised how important this knowledge will be in building/scaling web services. And, this skill set will be more valuable than just learning the same paradigms you already know in a new language.
In my mind, the three major branches of programming are imperative (C/C++), functional (LISP) and declarative (SQL, PROLOG). A lot of people will tell you to look at LISP, and they're right, but also look at PROLOG. It too will expand your mind.
Perl is a good language to know. Hear me out before you mod me down into oblivion! I'm not much of a Perl developer. At work I use Java. For personal projects I like to play around with the "cool" stuff like Python, Lisp or Ruby. For me, Perl is great for all the stuff in between.

For my entire development career, no matter what language I'm using, I've found myself using Perl on almost a weekly basis for little adhoc scripts. Generating test data? Text processing? Quickly automating some tedious task? Perl to the rescue. I guess if you know Ruby or Python you could do the same thing with those, but Perl is almost everywhere and you have all of CPAN at your finger tips.

Even though I'm not developing my applications in Perl I consider it one of my most crucial tools that I can't live without. I think every developer should have one of these and with its ubiquity and CPAN, a strong case can be made for Perl.

It also doesn't hurt that there are plenty of jobs out there for good Perl developers. We've all seen terrible Perl code and heard the jokes, but the fact is there are some very large Perl projects (some very high profile) being worked on by some smart people. Sure, Perl has its warts, but it's incredibly useful and a little discipline will go a long way.

There's my case for a practical language... If you want to learn something that will fundamentally change the way you think about programming then learn Lisp. I read the PG essays, the Eric Raymond stuff, etc. and decided to take a look. Eventually, things just clicked and it gave me a whole new perspective on the languages I already knew.

pick up emacs or vim while you're learning a new language!
yous tudy CS and only studied programming in the 2nd year?

What languages do you know more?

Id say go functional, entirely different, mindexpanding and might be very important in the near future because of concurrency/parallellism.

Erlang, Clojure, Common Lisp, Scheme.

no i had other subjects like comp org,data strucutres,microprocessors ,graphics.
I wanted to say Lisp as well, but if you want to tackle web development...there's this web "framework" called Seaside that's written for Squeak Smalltalk and there's a one-click package meaning that you click, it loads up and starts a web server and you start messing around with it.

http://seaside.st/

Gexla,

stop posting comments. they are automatically dead.

log out of your account, then check your comment history to see this.

That would depend on what you would want to work on in the future. In my opinion you should try getting hold of 8085 Kit and do a bit of assembly. You should also try one of the functional languages(Haskel, LISP or XSL Transforms). If you want to do web programming you should look into Python and C#(ASP.Net).
(comment deleted)
depending on what you want to do dev wise you should strengthen your skills in these by working on actual apps in them. Get involved with a favorite open source project in on of these languages. School doesn't generally teach real world coding in my experience.
In my opinion, as a student, you must concentrate on subjects like Data structures, Algorithms and Operating Systems (If you have already done a course in these then go for advanced levels). They are the foundations. Moreover a semester is way too less for C/C++ . Once you have a good grasp on C/C++, learning most of the other languages will be fairly easy.