You are not logged in.
Pages: 1
I can program in C, not fluent but I am very comfortable with it. I can do a lot of coding without looking up much, basically I look up some man pages to check return values or arguments etc. I think I am at a fairly comfy level to start learning a second language. I basically do all of my programming within Unix/Linux and I follow the POSIX API for most stuff, I am very unskilled with the win32 API.
I took that in to consideration, and in a hope to boost my resume and my portability I started thinking about learning Java as a second language. Sure, I could learn win32 API for C but I don't think I would do much C coding for Windows. I think it would be more beneficial to learn Java and gain a whole new language with great portability. I also considered C++.
http://www.tiobe.com/index.php/content/ … index.html
I read some of this site's data to get an idea of the language trends. C, C++ and Java have been top languages for a very long time. I feel those 3 are pretty standard and any of them are safe bets. I don't want to only boost my resume, but I want to gain a whole new tool chest. I think C gives me the ability to do a lot of low level work, systems work etc. Java would give me a whole new tool chest and give me the portability I hope for. C++ has the low level power but lacks in the portability department (still relying on specific APIs etc, maybe this changed a bit in 0x?)
I looked through a lot of job ads and by far the most common requirements I have come across are:
- C/C++ skills
- Java skills
- Unix/Linux skills
Then another set of common skills that are required are (less common than the ones above):
- C# skills
- .net or other skills
- SQL or other skills
Considering these things I think Java is a nice progression from C. In the future I would think C++ and/or some scripting languages would be a nice touch.
Do you think this seems like a sound approach/progression? Any advice?
Offline
You will probably want a scripting language, i suggest Python but i hear Ruby is nice too. Python is used by tons of companies to do various topics so you really cant go wrong with a strong understanding of Python. just my 2 cents
Offline
I recommend Ruby as a next choice.
Your knowledge of C means reading the Ruby source code is easy, as well as writing your own C extensions.
Ruby libraries (Rubygems) such as RubyInline also allow you to easily embed C directly within Ruby code.
Personally I use Ruby for a variety of command line tasks (Rake, Thor), web development (Sinatra, HAML + Sass and my current window manager, subtle.
Learning the Ruby syntax means you can also use JRuby - a Java implementation of Ruby allowing easy access to Java libraries - and Rubinius.
I plan to revisit Python properly at some point (probably during the long-ass flight back home to Australia) and second markbabc's recommendation, but for now Ruby makes hacking things together on a daily basis quick, easy and fun... which is not too shabby
Offline
Thanks, Ruby and Python both look pretty interesting. I need to do more reading and research on them, but they look very interesting~
Offline
It always seems to be easy for me to decide which language to learn next. The much harder task to decide WHAT to make with the new language.
Another thing to consider is learning a new library. For example, consider learning the GTK or Qt libraries. Or, you know, any other library.
In regards to both Ruby and Python, when I became interested in learning an object oriented modern programming language, I did some studying to find out which one to learn. One website said that Ruby and Python have pretty similar functionality, but people just seem to "click" better with one or the other. I tried both, and it was pretty obvious to me which one clicked. I won't tell you which one though, because it's not important.
Offline
It always seems to be easy for me to decide which language to learn next. The much harder task to decide WHAT to make with the new language.
indeed. I think your choices for good ol' all purpose languages are fine. but if you are considering specializing in a certain area, say web development for example, you should research what languages are currently popular in that field and why they are used. As always, it's good to have a general grasp on as many languages as you can. I've been to many job interviews where EVERYONE applying knows java/C/C#. a little thing like "some experience with Perl/Python/Ruby" will make you shine above the rest.
Hofstadter's Law:
It always takes longer than you expect, even when you take into account Hofstadter's Law.
Offline
I am going to have to say that in my experience, learning what I wanted to learn was far more beneficial than trying to learn something to keep up with the job market. If you know C style static languages well, then have some fun and learn a scripting language. Once you know languages from a couple of general areas, like c-based, scripting, functional, then you will be able to read most languages quickly, and if a job requires you to pick something up you will be able to do it very fast.
With that said, check out:
http://www.tiobe.com/index.php/content/ … index.html
Also, as far as scripting languages go, python is clean, fast (for an interpreted language) and easy to learn, and makes a great intro to sh syntax style languages. I often hear that Ruby is "The unholy marriage of Python and Perl", but all in all it is a wonderful language.
As the tiobe chart suggests, you will run into a lot of python out there, it is very useful to know, it is also one of the most common languages used in open source projects, along with C and C++.
Learn for fun, you will learn more, and when you need to target something you will be better prepared to do so.
Offline
I have used some Python on one weekend for kicks and it was pretty fun. I thought it was pretty unique. I think I will have to give each a little time and see what clicks the most.
Thanks!
Offline
I just started with Ruby. Reading on "Programming Ruby - Pragmatic Programmers' Guide" and it's good so far. Very interesting.
Offline
Your roadmap should include imperative, object oriented, and functional languages; as well as statically and dynamically typed ones. The first category is not clearly cut since many languages are hybrids, but the importance of learning how to solve problems in different paradigms cannot be understated. IMHO, you gain much by learning to design well in a statically typed, object-oriented language: they force you to think hard about the solution space before you dish out code.
Offline
Java and C# (Windows is better for C#, though Mono is okay for learning the basics) are good statically-typed, object-orientated languages to learn how to solve programs in OOP style. Python and Ruby are also good OOP languages, but they use dynamic-typing variables, which isn't a problem, but it takes a slight getting used to. C++ is a good language to learn if its required, and as such, I would save it for after an intro to OOP (see above languages) as adding memory management and other advanced topics may take away from the learning experience.
Arch i686 + KDE4
"I Write Programs, Not Excuses" - Panic! at the Kernel
Offline
Regarding C++, it may be worthwhile to wait until the next standard is ready; even though gcc is catching up to the draft. There will be drastic improvements, which today's books do not reflect.
Last edited by Substrata (2010-11-10 00:30:12)
Offline
Regarding C++, it may be worthwhile to wait until the next standard is ready; even though gcc is catching up to the draft. There will be drastic improvements, which today's books do not reflect.
Yes, that would be good, except when will the standard be accepted? As of now, it seems to be just thrown aside to the C1x standard they're working on.
Arch i686 + KDE4
"I Write Programs, Not Excuses" - Panic! at the Kernel
Offline
I read about 150 pages of a Java book to get an idea of what it's like and I like what I have seen. I don't think it's too different from C syntax wise, the method of programming is totally different though. I think it looks easier than C++ even though I am fairly good at C.
I think I am going to check out a C++ book and a few books on Python, Ruby and Perl and a few other popular languages. If you have any favorites let me know!
Last edited by Google (2010-11-10 13:55:45)
Offline
I would say, given your priorities, you should learn Java. I spent two years coding in Java but found I needed many books before I could get the language to do what I wanted. Still java provides a discipline of coding that it is important to understand even if you don't adopt that discipline in its entirety later on.
Now I program exclusively in Python and am still striving to create simple and readable code, but the power to do what you want is all there in the various libraries and there are so many useful tutorials and examples on the internet - I no longer need many books to help me.
Try to understand other people's code, seeing 'good' code is a useful learning experience and provides powerful models for your own coding and module development.
Different styles of languages make you think differently how you would write code to solve a particular problem. The first time I wrote code in Forth I think it took me 2 years before I really understood what Forth programming was all about.
And as has been mentioned earlier, different applications require a variety of approaches both in terms of language and style. Do some gui programming, then some socket programming, try financial applications, database applications with SQL and for a real challenge, games software.
Have fun.
Offline
Thanks,
I like reading other people's code. I also think it's a good learning tool.
I will keep at it, thanks!
Offline
If you want to take a break, try doing some problems at http://projecteuler.net/ in haskell over the weekend. Functional languages are really interesting.
Ah, good taste! What a dreadful thing! Taste is the enemy of creativeness.
Picasso
Perfection is reached, not when there is no longer anything to add, but when there is no longer anything to take away.
Saint Exupéry
Offline
Pages: 1