Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
I am new in this community. I just completed my Btech in Computer science, I have interest towards programming especially java. I started studying java but i am little bit slow in logic and understanding the concepts. I have some good books of java but when doing the program i am losing my confidence because of the logic issues. I have some doubts
How can i improve my logical and coding skills
HOw to get real interest in programming.
Is there any shortcut for studying programming
Please provide some suggestions as i knew this forum has lots of good programmers. Please share ur thoughts and how you people improving ur logics.
Any help is appreciated
Perfect way is to start with the language you love. The syntax you like. The things you know. For example, suppose you know C++ and you are a bit familiar with it. Of course, you had done any of the language before in BTECH. So, go start up with that. Go through some basics of that to intermediate. And, if you're new to programming, then don't jump towards deep nor visit the Forum's guide post until you face the same problem. Make simple programs. Ask experts for your problems and when you feels yeah I learnt so much from my self and community, start digging the complex scenerios of that language. (Here, language can be any programming. For your case, Java)
Whenever you got perfect in your own loving language, it would be easy for you to switch any of the language because all languages are same probably. Mostly, some syntax changes and some component, feature or etc changes.
Write code. Read code. Study code. Breath code.
If you aren't interested already then (1) will be a bit hard
No, you just have to put the time in and do it
At the end of the day, the real way to become a better programmer it to use your tools more and to research proper methods of using those tools. There are no short cuts, there is no go direct to go and collect $200.
As for interest in coding. I find that my interest for various projects waxes and wanes but at the end of the day, I still have a voracious apatite for solving problems and writing code. I don't know if that can be learned.
1) By practice and even more practicing.
2) Don't you have an interest you can combine this with? It's hard to find a hobby that can't use any software.
3) If there is a shortcut it's probably no good.
4) Why do something you're not interested in?
first of all
*3. There is no shortcut
you have to be patience and passionate in order to learn coding.
*2. See thing in computer, and be curios how the engineers make things so easy and simple that any person can do much complex task in a seconds
and
*1. In order to improve your logic you need to keep coding, more you code more you get sharpen, solve puzzles, and maths problems, and to learn good coding style head first java and Head First Design Patterns is the best book that I found, which I personally love to read.
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
First of all, I love Python, and I currently use it for most stuff. However, as a PhD student, I mostly implement prototypes for testing and evaluating ideas. This also includes that I'm usually the only one coding, and that -- while I certainly try to write half-way efficient code -- performance is not a primary issue. And for quick prototyping, Python is for me just neat.
Now I consider to go with some of my stuff more "serious", i.e., to bring it into a productive environment, make it better maintainable, and maybe more efficient. So I wonder if it's worthy to rewrite my code to, say, Java (with which I'm also reasonably familiar). I know that Python is not slow, but things like Java's static typing including seems to make it less prone to errors on a larger scale, particularly when different people work on the same project.
It's only worth it if it solves a real problem, note, that problem could be
I want to learn something better
I need it to go faster to reduce power requirements in my colo.
I need to hire more people and the talent pool for [insert language here]
is too small.
Insert innumerable real problems here.
Python and Java are both suitable for production. Write it in whatever makes it easiest to solve the problems you and or your team are facing and if you want to preempt some problems make sure you've done your homework. Plenty of projects have died because they chose C/C++ believing performance was going to be a major factor without thinking about the extra effort involved in using these language well.
You mentioned maintainability. You're likely to require more code to rewrite it in Java and there's a direct correlation between Bugs and LOC. It's up for debate which one is easier to maintain. I'm sure both camps believe theirs is.
Of the two which one do you enjoy coding with the most?
The crucial question is this one: "Java's static typing including seems to make it less prone to errors on a larger scale". The crucial word here is "seems." Sure, Java will help you catch this one particular type of error. But how important is that, and what do you have to pay for it? The overhead imposed by Java's type system means that you have to write more lines of code, which means reduced productivity. I've used both and I have no doubt that I'm more productive in Python. I have found that type-related bugs in Python are generally easy to find and fix. Keep in mind that in a professional environment you're not going to ship code without testing it pretty carefully. The bottom line for a programming environment is productivity - usable functionality per unit of effort, not the number of bugs you found and fixed during development.
My advice: if you have a working project written in Python, don't rewrite it unless you're certain there's a benefit.
Java is inherently object oriented. Alternatively python is procedural.
As far as the ability of the language to handle large projects you can make do with either.
As far as producing more usable products I would recommend java script as opposed to java because of its viability in the browser. By embedding your js in a publicly hosted website you allow people with no coding knowledge to run your project seamlessly in the browser.
Further more all the GUI design features of HTML are available at your disposal.
That said any language has it's ups and downs and anything I've said here is simply my perception.
Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
I've been programming in java for a while and I really like the language, I've mostly just done game programming, but I want to get a feel for some of the more commonly used api's and frameworks and just get a generally more well-rounded grasp of the language and the common libraries in the current job market.
From what I found things like spring, hibernate, and GWT are pretty in demand right now. I looked at some tutorials online and they weren't hard to follow but I really felt like I had no context for what I was learning - I had no idea how any of it would be use in a real work environment. I know nothing can rival the benefit I'd get from actual work experience but that's not an option for me right now, I need another way to learn these technologies in a way where I'll at least feel comfortable working with them and know what I'm doing beyond just understanding what code does what. I checked out a few books but they were all really old(like pre-2006, am I right to assume those books would be kind of out of date today?) or required experience with libraries that I didn't have and can't get. I hate getting stuck looking for the best resource to learn something instead of spending my time actually learning.
All I really want is someone to point me to a resource(website or ebook) that is aimed at already experienced java developers and will not only teach me some interesting useful java technology(anything that is useful, I dont know much outside of graphics libraries and game related things so I was thinking some database or web programming api's) but also give me a good perspective of it and leave me feeling confident that I could actually use what I learned on a practical application.
If my post makes you think I'm not yet experienced to be learning these things, which I doubted earlier today but am now starting to question, then what do you think is the next step for me? I just want to get better at java.
Thanks everyone
Register to the online courses at www.javapassion.com. It is cheap for the content and quality they offer.
The best way to learn is by doing. So I would recommend you to either start a private project which uses the technologies you want to learn or to find an open source project which uses them and contribute to that. The latter option has the advantage that you get feedback from other programmers, but the disadvantage that it leaves less room for experimentation.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I'm interested in Programming especially in Java. Is there a page, which explains different informatics topics in Java or generic for all OOP languages? I mean something wikipedia-styled, but more understandable and just for programming/informatics.
Maybe with exercises, but basicly it should explain different problems of informatics.
There are a lot of good online resources for learning Java, and many of them will teach you good OOP practices as well.
The Java Tutorials
Java API Specification
Thinking in Java 4th ed. by Bruce Eckel
The Java Language Specification
The Java Virtual Machine Specification
For programming in general though, I recommend Structure and Interpretation of Computer Programs.
For programming topics on Java, go to the Oracle (Sun) Java site. That's the holy grails of everything regarding Java. For a Wikipedia-style format, just go to wikibooks (as it will have topics on Java and other programming languages, not just OO.)
Other than that, a short answer to your question will be simply NO. Programming is too complex a topic for someone to create the type of material that you are asking.
If you are seriously interested in programming (and I mean seriously), focus on one language alone and learn it (as opposed to looking for the perfect language or trying to analyze all possible alternatives and falling into "paralysis by analysis".)
Again, if you are serious...
just pick one of the following:
C
Python
Ruby
Scala
C would make you face the nitty gritty of computing and people have been successful in learning programming with C as its programming languages (don't let OO and/or Ruby/Python/Java/.NET fanboys tell you otherwise.)
Python and Ruby are extremely beautiful languages that will teach to program, and do not force you to make everything into an object (a really retarded idea, more on that below.) Scala is another elegant and effective alternative.
Learn The Fundamentals of Programming First, the OO Analysis and Modeling (not the other way around
Avoid languages that force you to write everything in objects. That includes Java and C#. I've been working with Java for 12 years now, and it is a reliable platform. But it is a retarded language in that it does not allow you for procedural programming. Not everything is an object nor should be modeled as an object, sometimes not even in complex systems. People are still grappling with how to program correctly using a OO paradigm and they keep failing because they still don't get the capabilities and limitations of OO modeling and analysis.
So my suggestion is not to learn programming with Java (or C#). Go with the hard procedural (C) or the elegant, paradigm-agnostic (Python, Ruby or Scala.) Focus on modularity, structured programming and algorithms. Then, later you will be better equipped to truly understand where OO languages fit in.
I'm not going to delve into why I chose these 4 options or why I advise against Java and C#. That debate has been discussed a plenty and you can find it easily in stackoverflow and/or google. That's just my suggestion, from my experience (Java and otherwise), a suggestion that I always give to those serious about learning programming.
In the end, it doesn't really matter which of those four you pick. Just flip a coin, pick one and stick to it until you are decent with it. Focus on learning proper programming techniques, problem decomposition and algorithms rather than on the language itself.
Good luck.
edit:
I forgot to mention, if you are serious about learning programming, buy books. You won't learn from visiting sites. And you have to put your time in it (we are talking 4hrs a day at least... I don't see anyone learning programming with anything less than that.) Anything less is just make-believe going through the motions of learning.
I strongly recommend imo the best book written about Java.
Effective Java by Joshua Bloch
http://www.programmingpraxis.com could help you a lot since i go through most of the examples from there.Have a look.
EDIT:
http://www.cs.sunysb.edu/~skiena/392/javaprograms/
http://projecteuler.net
Continuing the Bill's recommendation
http://www.artima.com/insidejvm/ed2/jvm.html
Effective Java by Joshua Bloch.
I would recommend these: Sun Tutorials,
FreewareJava.com,
java2s
Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 12 years ago.
Improve this question
I finished reading tutorials on Java and doing the sample exercises and I am ready to really get into coding Java, the only problem is I am a bit confused as to what I should do now. What path should I take at this point ? Should I join and start contributing to an open source project ? What suggestions would you give ? I'm not actually interested in something particular so anything will do.
For the more advanced programmers, try to put yourself in my position. What would you do now?
Contribution to OSS is definitively a good way to consider at some point, but I don't think that would be an easy task for someone who just started doing sample exercises.
For contributing to OSS, I suppose you would have to consider much more then a programming language, including:
SCMs - http://en.wikipedia.org/wiki/Revision_control,
File comparison is related - http://en.wikipedia.org/wiki/File_comparison
Software design patterns - http://en.wikipedia.org/wiki/Design_pattern_(computer_science),
Software testing - http://en.wikipedia.org/wiki/Software_testing,
Get familiar with Java libraries such as:
Apache Commons - http://commons.apache.org/,
Hibernate - http://www.hibernate.org/,
Spring Framework - http://www.springsource.org/
Documenting - http://en.wikipedia.org/wiki/Javadoc
Depending on the project you would like to get involved with, it would probably be wise to familiarize with some of these:
JDBC - http://en.wikipedia.org/wiki/Java_Database_Connectivity
JMS - http://en.wikipedia.org/wiki/Java_Message_Service
Swing - http://en.wikipedia.org/wiki/Swing_(Java)
JNDI - http://en.wikipedia.org/wiki/Java_Naming_and_Directory_Interface
JMX - http://en.wikipedia.org/wiki/Java_Management_Extensions
As you can see, it's a lot, so depending on what you want and what level you are at right now, I suppose it would be good for you to stick with some of the programming exercises such as:
Working on PLEAC Java - http://pleac.sourceforge.net/pleac_java/index.html
You may even be able to contribute to PLEAC
RubyQuiz - http://www.rubyquiz.com
Not Java, but problems are rather general, you can try solving them in Java
CodingBat - http://codingbat.com/java
Has some nice problems
Alioth - http://shootout.alioth.debian.org/
Very benchmark oriented, but can be interesting. Look at specific problems (e.g. http://shootout.alioth.debian.org/u32/performance.php?test=fasta#about) to see what is needed
When you pass through some of these and feel confident you can continue, I suggest learning some of the libraries, such as Spring.
Hope this helps. Most importantly - note there's always something you can do, whatever you do is better then not doing anything. It's going to keep you motivated and involved in things that you need to know. So learn, learn, learn... Best luck!
If I were you, I'd try to build some kind of data structure like a linked list or something of that nature. It causes you to understand the fundamentals of java and gives you a better understanding of the structure that you make also. Check out one of my old school labs to have some direction. http://www.mediafire.com/?dq1lmshdzage8xo
Try this for implementation example.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
OK I am not only new to concurrency in java but am also fairly new to java programming. I tried understanding concurrency from The java tutorials, tried reading Concurrency in practice but it seemed too advance, so tried reading from couple of other books: SCJP A comprehensive, The java programming language 4th edition.
Its as if there are things which just don't add up or make sense, I am not able to get the why's and how's and form the correct pattern of conceptual understanding. I apologize for describing this exercise in futility. But can someone please recommend good reading materials and/or ways to learn concurrency in java.
but am also fairly new to java programming
Leave the concurrency book aside for a few months and go ahead with reading a basic Java/SCJP book and practicing basic Java a lot. Create so now and then a Thread or Runnable as per the book's instructions. Play around with it for some months until you get a good grasp on it. Then continue with the concurrency book.
Learn walking before running, else you're crawling instead of running.
This sounds like you will soon be tested (class? certification?) "on Java concurrency". You have not experienced the cycle of running into a problem naturally, thinking about how to solve it, and turning to concurrency for a solution. If this is the case...
(1) Don't blame your brain. Rather, take a step back and start thinking about problems that interest you. Write them down. Internet applications are a good place to start. For example-- writing some sort of Internet server that can handle multiple connections from different users, like a game server. Or, a stock trading program that has to handle your robot's orders at the same time as processing information from the broker.
(2) Think concurrency. Now that you have a problem that interests you, and thinking of concurrency simply as multi-tasking, draw a diagram of actors/programs with arrows representing how they need to communicate with each other. Sketch out a dummy-skeleton code. You're not actually going to write a game server; but you can make a simple skeleton class library with simple, empty member functions like connectToGame(){}
(3) Now you're ready. Run a hello-world thread example or two. Flip through your books or browse the Javadocs and see the different concurrent structures that are available. Think about which ones you might apply to your problem. Don't worry about making the "right choice". You will soon find out if you've got something that works.
(4) Embrace trial and error. There is another word for it: learning!
Now, after you get some experience doing this, you'll be able to pick up a Java concurrency book and read about someone else's problem.
Hang in there and don't give up.
My favorite learning Java Book which has a great chapter on concurrency is:
Sun Certified Programmer & Developer for Java 2 Study Guide (Exam 310-035 & 310-027)
It's a difficult subject, nobody has full grasp of it, not even those who designed it.
Many people understand only a subset of it. If you only know a few tricks/patterns that you can use in your programs with confidence, that's good enough. From there you accumulate more and more.
A novice may only know that he can add 'synchronized' keyword to methods. Amazingly that solved a lot of problems and performs just fine, even if he has no idea what he is doing.
To add my two cents worth: concentrate on learning the concepts of concurrency first, rather than the machanics of actually using it in any particular language. If you get bogged down in language constructs it'll be all that much harder to get a high-level understanding of the subject.
To this end I would recommend How to Write Parallel Programs by Carriero & Gelernter (free & legal PDF download). It strikes a good balance between describing the concepts and providing concrete code examples, and doesn't get bogged down in theory. It's actually very readable and entertaining (or maybe that might be just me).
I feel like I understand concurrency backward and forward. Recently, I grabbed a book off the shelf in our office and found it was VERY good. Not just at concurrency, it gives great coverage of Java as a whole.
Introduction to Java Programming, Eighth Edition: Comprehensive Version, Y. Daniel Liang
However, most of my understanding came from experience working with code, tackling problems, and trying examples. I never truly understood threading until I did it.
Concurrency is complex and most people won't get it just from reading. Look through the API and write some test programs to try things out. Whatever book you choose, try to not just read the code, write it out and run it. After a day or two, working with it, you'll have it mostly figured out.