Welcome to the Java Programming Forums


The professional, friendly Java community. 21,500 members and growing!


The Java Programming Forums are a community of Java programmers from all around the World. Our members have a wide range of skills and they all have one thing in common: A passion to learn and code Java. We invite beginner Java programmers right through to Java professionals to post here and share your knowledge. Become a part of the community, help others, expand your knowledge of Java and enjoy talking with like minded people. Registration is quick and best of all free. We look forward to meeting you.


>> REGISTER NOW TO START POSTING


Members have full access to the forums. Advertisements are removed for registered users.

Results 1 to 3 of 3

Thread: I know Java. What's Next?

  1. #1
    Junior Member
    Join Date
    Jan 2011
    Posts
    2
    Thanks
    1
    Thanked 1 Time in 1 Post

    Default 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
    Variables
    Classes
    Data structures: 1d array, Matrix (2d array), Queue, Stacks, Objects (OOP)
    Dynamic data structures: List, Binary Tree
    Searches and Sorting through said data structures
    Recursive algorithms

    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.


  2. #2
    Super Moderator helloworld922's Avatar
    Join Date
    Jun 2009
    Posts
    2,895
    Thanks
    23
    Thanked 619 Times in 561 Posts
    Blog Entries
    18

    Default 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):

    Heaps
    Hash Tables/Dictionaries
    Queues/Stacks
    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
    Discrete mathematics
    Event driven programming model
    Reflection
    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)
    dynamic programming
    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
    Graph/Map theory
    Path finding algorithms (Dijkstra's algorithm, A*)
    Computer learning and AI

    Language wise, I would recommend learning C# and then C++. C# is very similar to Java, but it's also a bit closer (syntactically and semantically) to C++. I would recommend C++ over C because it has a good base in OO where-as C is mostly functional/procedural programming (useful for micro-controller programming, though some micro-controllers use C++). Python and/or matlab are also good languages (matlab if you're planning on doing scientific/engineering computations), but they're quite different than the above listed languages. You could also dabble with various web oriented technologies (HTML/CSS, JSP, Javascript, PHP, JavaEE which is basically Java). There are also hundreds of other languages you could learn.

    What path you take really depends on what you want to end up doing with your programming knowledge.

  3. The Following User Says Thank You to helloworld922 For This Useful Post:

    assaf2b (January 1st, 2011)

  4. #3
    Junior Member
    Join Date
    Jan 2011
    Posts
    2
    Thanks
    1
    Thanked 1 Time in 1 Post

    Default Re: I know Java. What's Next?

    Quote Originally Posted by helloworld922 View Post
    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):

    Heaps
    Hash Tables/Dictionaries
    Queues/Stacks
    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
    Discrete mathematics
    Event driven programming model
    Reflection
    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)
    dynamic programming
    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
    Graph/Map theory
    Path finding algorithms (Dijkstra's algorithm, A*)
    Computer learning and AI

    Language wise, I would recommend learning C# and then C++. C# is very similar to Java, but it's also a bit closer (syntactically and semantically) to C++. I would recommend C++ over C because it has a good base in OO where-as C is mostly functional/procedural programming (useful for micro-controller programming, though some micro-controllers use C++). Python and/or matlab are also good languages (matlab if you're planning on doing scientific/engineering computations), but they're quite different than the above listed languages. You could also dabble with various web oriented technologies (HTML/CSS, JSP, Javascript, PHP, JavaEE which is basically Java). There are also hundreds of other languages you could learn.

    What path you take really depends on what you want to end up doing with your programming knowledge.
    You sir, are fucking awesome. I highly appreciate you putting so much time and thought into this post.

    Happy new year, and thanks a lot!

  5. The Following User Says Thank You to assaf2b For This Useful Post:

    planmaster (January 5th, 2011)