All:
- Require some form of runtime on your system (JVM/.net/Python runtime)
- All can probably be compiled to executables without the runtime (this is iffy and situational, none of them are designed to work this way)
- Are good languages
- All have specific areas where they are much more appropriate than the other two
Java:
- Tries very hard to be Cross Platform--generally succeeds
- Little access to platform features that are not in the SDK
- Slowest of the three to change and does not contain features common to the other two such as closures
- Very backwards compatible (partly because of the previous point)
- FAST (about 2x slower than C, quite a few x faster than python)
- Probably has the most library support of the three
- Strong multi-platform server systems already deployed using J2EE
- Scales down to embedded (I've worked on 2 different embedded java projects--coming soon to a cable box near you)
- Static
C#
- Quicker to add new features
- Windows only--Mono is cross platform but does not have the library support.
- Started very similar to Java but has many more language features now.
- Much better access to windows APIs
- Not sure about speed--I think it's similar to Java.
- Very good library support
- The only one of the three that you have to pay for (it's free for "entry level")
- Static
Python
- Language is cross platform. Not sure about non-language platform access (such as drag-and-drop)--anyone know?
- Probably an easier language to learn
- The only one of the three that does not use c-like syntax
- Slowest of the three, but still pretty darn fast compared to other dynamic languages.
- Dynamic
This link is also interesting
Hey y'all, I'll be needing to choose either one of Java, python, c++ or web programming for my second semester in electronics and communications but i have no idea where to start from
I've learnt all the basics of c programming in my first semester and i have to choose between the above mentioned for the second semester and it's really rattling my brain
Which of them would be better for a beginner to programming language and which would be most helpful in the future, if you'd have to say?
Thanks in advance!
How Similar are Java, C#, and Python? - Stack Overflow
What Programming language and why? C, C++, Python, C#, Java, etc
Is programming in Python faster than in C, C++ or Java? - Software Engineering Stack Exchange
Definitions of “interpreted language” and “compiled language” with explanations of why Python and Java are or are not such languages - Python in Education - Discussions on Python.org
Videos
All:
- Require some form of runtime on your system (JVM/.net/Python runtime)
- All can probably be compiled to executables without the runtime (this is iffy and situational, none of them are designed to work this way)
- Are good languages
- All have specific areas where they are much more appropriate than the other two
Java:
- Tries very hard to be Cross Platform--generally succeeds
- Little access to platform features that are not in the SDK
- Slowest of the three to change and does not contain features common to the other two such as closures
- Very backwards compatible (partly because of the previous point)
- FAST (about 2x slower than C, quite a few x faster than python)
- Probably has the most library support of the three
- Strong multi-platform server systems already deployed using J2EE
- Scales down to embedded (I've worked on 2 different embedded java projects--coming soon to a cable box near you)
- Static
C#
- Quicker to add new features
- Windows only--Mono is cross platform but does not have the library support.
- Started very similar to Java but has many more language features now.
- Much better access to windows APIs
- Not sure about speed--I think it's similar to Java.
- Very good library support
- The only one of the three that you have to pay for (it's free for "entry level")
- Static
Python
- Language is cross platform. Not sure about non-language platform access (such as drag-and-drop)--anyone know?
- Probably an easier language to learn
- The only one of the three that does not use c-like syntax
- Slowest of the three, but still pretty darn fast compared to other dynamic languages.
- Dynamic
This link is also interesting
Python is a dynamic language where Java and C# are really not. It is totally different than the other two. There are ways to accomplishing things in Python that do not translate well to the others and vice versa.
Java and C# look the same, but they have differences between the two under the sheets. Being an expert in one, does not make you an expert in the other by any stretch of the imagination. The syntax is similar and libraries are too, so it would be easier to get up to speed in one or the other, but there are subtleties that can trip you up.
I have learnt the basics of Python previously, used MATLAB and R in my degree, now I want to learn one language well. I don't have a specific goal in mind from my programming language of choice but building a game would be interesting. I have done some research, with many people saying you should learn C, others say only learn C++ if you want to build pc/ console games, C# for mobile, Python for beginners, but I want to know what would be "best"(yes I know that is very subjective).
What would make a good all-round language to learn? I want to learn something that will give me the greatest flexibility, transferable skills, and orportunities. I am inclined to believe that this choice should be C++ but would love to hear your opinions. Please help!
Ousterhout's article1 about scripting languages suggests that the higher level the programming takes place, the more productive the programmer is. If we take that, as Boehm says2, the number of lines a programmer can write in a given time is constant and not dependent on the language or its type (low level, system programming, scripting), one can easily believe the claim. The resulting instructions-per-source-code-line -ratio can be an order of magnitude (or several) better with scripting languages than with system programming languages.
As scripting languages heavily rely on ready-made utilities for common tasks (e.g. data structures, string manipulation), their main use usually is to enhance productivity with the cost of slower running speed by providing a syntax that's easy to learn and efficient to upkeep programs with. One doesn't resort to a scripting language when top execution speed is needed.
[1]: J. K. Ousterhout, Scripting: Higher Level Programming for the 21 Century, Computer (IEEE), 1998
[2]: B. Boehm, Software Engineering Economics, Prentice Hall, 1981
If you measure productivity as "time to write a specific simple program" then it depends so much more on programmer experience and quick mind than the language that you are really evaluating the programmer, not the language.
I believe timed code contests indicate that the language doesn't really matter for those kinds of tasks. There is no one language that wins such challenges easier than others (at least not if you allow for the relative popularity of languages).
If you measure performance as "the effectiveness of the best program" written in a given language, then it's even less language-dependent. See for example the results of the Galcon AI contest. The winner is written in Lisp. The next Lisp entry, however, is ranked #280. What does this tell us about the language's suitability for writing great AI efficiently? In my opinion, nothing. It just tells us that "bocsimacko" came up with and implemented the most effective algorithms. For the record, time was not a major factor in this contest - people had more than two months to develop their code.
Lastly, if you measure performance as "long-term cost of maintaining a project" then I think you're onto something. Especially if you hire only the best people for the job, and count cost in man-hours rather than dollars. I have a strong opinion on which languages are best for this, but having no hard evidence to link you to I'll leave this opinion out. Perhaps someone else has links for this type of performance.