I know Java. What's Next?
Hello, and thanks for taking the time to click this topic.
I'm in a little bit of a pickle at the moment and am posting here to receive an educated opinion regarding my future as a programmer. To clarify, I'm trying to figure out which language would be best to learn next. I hear all these things about C, C++ and C sharp, but I have no idea which would fit me best.
Java has been my first and only programming language. I've studied it for a mere 3 years, and I'm in no way proficient at it. However, after having learned quite a few things about it, I'd like to expand my knowledge.
Now, I am going to present to you the subjects which I've already learned and mastered, and would appreciate it if you could direct me to a language that shares these subjects, extends them, or at the very least interacts with them. I guess what I'm looking for is a language that would be easy to learn given the knowledge I possess at the moment.
What I know in Java:
Basic control structures: if, for, while
Basic logic structures: if, or, and, not
Data structures: 1d array, Matrix (2d array), Queue, Stacks, Objects (OOP)
Dynamic data structures: List, Binary Tree
Searches and Sorting through said data structures
And of course, all the abstraction, modularity and encapsulation stuff.
So, what language's next?
I hope that this post has been clear enough and not too demanding, as this isn't my intention. I'm simply asking for experienced help on the matter, instead of going at it alone with no proper idea or set plan.
Thanks for reading, and double the thanks for those who provide any sort of constructive response.
Re: I know Java. What's Next?
I think what's next to try and apply your knowledge of Java and do some programming. Come up with something you think would be useful (or fun) and then try to create it. Also, you can never get enough algorithms :) These are fairly universal regardless of what language you use. Another good idea would be to learn about parallel programming and multi-threading. Also, you'll find that once you learn the basic CS topics and programming paradigms you can quickly pick up any language within a few weeks (you probably won't be an expert in that language, but that's ok).
Good algorithms/data structures/Concepts to learn about (this is by no means a complete set, just what I could come up with off the top of my head):
Linked lists (singularly linked and doubly linked)
Balanced binary trees (several methods)
Spatial data structures (Quad trees/Oct trees, KD trees, hierarchical grids and bounding volume hierarchies)
Set theory (at least the basics). Other math (particularly vector/matrix math) would also be very useful
Event driven programming model
Functional programming paradigm (you'll have to use a language other than Java)
Regular expressions and parsing algorithms/tools
Parallel programming (multi-threading, multiple processes, mutex's/locks, thread pooling)
Algorithm analysis ("Big-O" notation and other analysis)
Root finding algorithms (bisection method, newton's method, secant method)
Numerical derivatives/integration algorithms
Linear algebra (solving simultaneous equations is a very good topic)
Monte Carlo methods and other stochastic methods
Path finding algorithms (Dijkstra's algorithm, A*)
Computer learning and AI
What path you take really depends on what you want to end up doing with your programming knowledge.
Re: I know Java. What's Next?
You sir, are fucking awesome. I highly appreciate you putting so much time and thought into this post.
Originally Posted by helloworld922
Happy new year, and thanks a lot!