views:

92

answers:

3

At the moment I know of Python, C and Java. I'd say my knowledge of Python is intermediate, I have written a web-bot that functions reasonably well (my old 'large' program to date) and I've been using the language for about 2 months. I have solved the first 20 or so project euler problems using Python aswell. The only thing I'm not comfortable with are classes in Python, but I'm yet to find a situation where I haven't been able to achieve what I want to do without OOP. My knowledge of C is decent, I understand pointers and with reference to my textbook/web, I can write some decent C code (I am not proficient but C is not my go-to language, I simply understand the power of C and how languages work at the core. I can read a C program and tell you what everything does and is doing). I took a course in Java (Introduction to Programming) last semester at university, and its at the same level as my C. My C skills are slightly better though. I dislike Java.

My go to language being Python, I feel like I should expand my knowledge base and see how other people are solving things. I want to use something high-level, where if I want, I can write a web-bot or something that can interface easily with the OS. I like IDLE and having a script.py and a python shell open at the same time. I would like a language that implements something like IDLE, or if you recommend a language, please let me know how you typically use it/is there something like IDLE I can use to play with it/learn it interactively.

Thank you for your time/reading.

I understand that what I've written might sound a bit silly/misguided (I've only been coding/its my new hobby for the past two months, go easy on me. I'm just trying to improve)

+3  A: 

Try a language that doesn't fit the paradigm that you're used to; it will force you to approach and solve problems in different ways. I recommend:

The last four are more or less functional (Haskell is purely functional and Scala is multi-paradigm; it combines OOP with functional programming. Erlang is functional and focuses on concurrency). Prolog will blow your mind :).

See if you can find a problem to solve that will expose you to a wide feature-set of the language that you're trying out. For example, you could try solving all those problems that you already solved in Python, in any of the languages I listed above.

Also note that simply knowing a language is not enough. Each language comes with its own set of best practices and patterns. This will take some time for you to grasp and will come with experience and practice. Like I mentioned before, you can start off with simple problems to solve that will expose you to the language feature-set. After that you can try finding an open source project that uses one of the languages I listed and see if you can a) figure out what they're doing or b) figure out if you can contribute to it. If you can't find a project that interests you, think one up - something that is larger in scale than the simple problems you solved first. Rinse, repeat. Good luck :)

Vivin Paliath
I have never really seen anyone gush over Prolog before, all I really know of it is "The thing erlang comes from". Why would you recommend it for mind-expansion over lisp or haskell? (which are sort of the default responses to that question)
Matt Briggs
@Matt my introduction to Prolog was during my sophomore year of college in my Programming Languages class. Even Lisp, I could fathom (strangely enough it made sense to me), but Prolog is a completely different beast. The reason I would recommend it is because the programming-paradigm for Prolog is completely different from anything else I've seen. It's been years since I wrote any Prolog, but I still vividly remember when the heavens opened at 3 AM in the CS lab when I finally "got" it (I was implementing a Real-Algebra parser and validator in Prolog).
Vivin Paliath
@Vivin: That is a really cool story :) I'll have to sit down and see how far I can get with it some day
Matt Briggs
@Matt thanks :) I love those 3AM epiphanies. Makes the all-nighters worthwhile!
Vivin Paliath
A: 

I recently found myself getting fond of javascript, mainly in a pure form, not jquery. It's quite fun and the interaction with css and html is interesting. Now that there are debuggers and things, it's good to use. I also feel that playing with it is a useful activity for future work.

MikeAinOz
+1  A: 

I don't know you, nor why you want to know programming languages, but I suggest that SQL and DDL are useful and mainstream.

ChrisW
Don't forget HTML!!!
Vivin Paliath
@Vivin - you're right, but I guessed that the OP knew HTML already, given that he said "I have written a web-bot"; and, HTML is a markup language, arguably not a programming language.
ChrisW
@ChrisW I was being slightly facetious ;)
Vivin Paliath
@Vivin - I wasn't being facetious: there was a time when I didn't know SQL, and it has been worth learning.
ChrisW
@ChrisW that is true
Vivin Paliath