Earn money with programming

Pages: 12345... 7
This is a commonly repeated myth. But I've seen too many C++ programmers write terrible Java code, to believe this any more.
You will see even more Java/C# programmers write terrible C/C++ code.

Most of the time for learning C++ is spent on learning how to overcome language limitations and idiosyncrasies, not how to solve real problems.
Java/C# programmers uses native calls to overcome language limitation :)
This is a commonly repeated myth. But I've seen too many C++ programmers write terrible Java code, to believe this any more.

Just what do you mean to say by that?
blackcoder41 wrote:
You will see even more Java/C# programmers write terrible C/C++ code.
Agreed.
closed account (oz10RXSz)
No, Java and C# coders usually don't return back to C++. It is like C++ coders don't look back at pure C.


Java/C# programmers uses native calls to overcome language limitation :)


No, native calls are a PART of the language. This is not a language limitation. Nevertheless I can't remember in 5 years time of coding in Java a single situation when I had to use JNI.

Language limitaiton is when you can't use threads efficienlty because language knows nothing about threads.
Language limitaiton is when you can't use threads efficienlty because language knows nothing about threads.


That's the one thing you've said that is actually a valid point. Hence why it is going into C++0x.

Things I disliked about Java:
- No operator overloading
- No function overloading (and no default parameters by extension)
- One of the stupidest iterator systems I've used...why can't I just access the current iterator? Why do I HAVE to call .next() to get it??
- Slow (but that comes with being an interpreted language)

That being said, if I need a program that MUST run on all systems, and I don't care about speed/efficency, I'll use Java.

No, Java and C# coders usually don't return back to C++.


Only bad programmers do that. Good programmer view languages as tools to make programs, not as the only way to do it. Although C++ does support major programming styles, unlike Java, which is nearly pure OO.
closed account (oz10RXSz)

- No operator overloading

This is a minor limitation. Better no operator overloading than broken one (please overload && in C++ to be semantically equivalent to the builtin, if you disagree).

- No function overloading

Not true. You obviously do not know Java.

- One of the stupidest iterator systems I've used...why can't I just access the current iterator? Why do I HAVE to call .next() to get it??

YAGNI. If you need to use iterators explicitly, you've probably already screwed.

- Slow (but that comes with being an interpreted language)

Not true. Java is a compiled language and runs just as fast as C++ in many cases (see an excellent Excelsiors JET compiler). In some cases it can be faster, due to: lack of pointer aliasing, lock elision/coarsening optimisation, faster memory allocation and deallocation, lack of memory fragmentation problems, multithreading without locks, virtual call inlining etc.


Although C++ does support major programming styles, unlike Java, which is nearly pure OO.


No, it does not. Its OO support is inferior to Java's / C# / Smalltalk's, it does not support AOP, modular, dynamic or functional programming. So no, it supports just a very narrow set of programming styles, just as Java.

Good programmers when they realize limitations of Java/C#, jump right into Clojure or Scala or F#. C++ compared to Scala feels like GW-Basic compared to C++. Scala is a niche language now, but many enterprises have already picked it (like Twitter, Sony, NASA, Google or LinkedIn). So if you want to invest something in a language used to create high performance, scalable systems running seamlessly on machines with tens or hundreds of cores you would rarther invest your time in Scala. How long can you wait for they add some basic features to C++, like generic type-bounds (aka concepts) or hashmaps - things present in other languages for 10 years or more?

When almost everyone learns C++/Java at college/university, putting C++/Java skills in your CV would not attract any attention. Putting Clojure, Scala, JavaFX or F# would.
Last edited on
closed account (z05DSL3A)
10 All languages are flawed.
20 All languages have limitations.
30 All languages grow in complexity to overcome the above.
40 New languages start out to be simple and overcome the above.
50 goto 10

NB: please forgive the use of goto.
closed account (oz10RXSz)
This is why good programmers learn new languages. No point in sticking with COBOL these days.

But it is also possible to grow a language without making it more complex -- just drop the backwards compatibility from time to time to fix the things that you got wrong the first time and provide an easy transition path. This strategy works perfectly for Python, Ruby and PHP - and these three have more overall market together than C++ has. Keeping C++ (almost) compatible with C was probably the worst thing that could happen to its design. Keeping Java 5 backwards compatible with Java 1.4 was one of the worst mistakes in the evolution of the language (generic type erasure).
Java is a compiled language and runs just as fast as C++ in many cases [...]. In some cases it can be faster
I knew it. Don't feed the trolls, guys.
xoreaxeax wrote:
No, native calls are a PART of the language. This is not a language limitation. Nevertheless I can't remember in 5 years time of coding in Java a single situation when I had to use JNI.
That depends on what you are developing for 5 years. Java PSP Emulator does use JNI http://jpcsp.org/


xoreaxeax wrote:
- No function overloading

Not true. You obviously do not know Java.
firedraco is actually correct, Java don't have functions, instead it has methods :)
Don't feed the trolls, guys.
Ok..

My final thoughts.
1. C/C++/Java/C#/etc are good languages. (Paint.NET is actually awesome though slower than other imaging softwares)

2. Java/C# or similar languages will be the king if the next photoshop or autocad version will be written in these languages.
closed account (oz10RXSz)
Ad 2. Java is already a king, since the time it replaced C++ as the most popular general-purpose programming language (see ohloh or TPCI stats). Java was never really targeted at desktop market, so you won't find too many desktop apps in it. However, desktop is just a small part of the overall application market and it is in decline for a long time now. Finally someone makes an online version of AutoCAD or Photoshop entirely in Java/.NET just like GMail or GoogleDocs have been made.


firedraco is actually correct, Java don't have functions, instead it has methods :)


If we follow this flawed reasoning, then C++ does not have functions neither. C++ has **procedures** or **methods** optionally returning values. :P True functions are in Haskell.
Last edited on
Ad 2. Java is already a king, since the time it replaced C++ as the most popular general-purpose programming language (see Trolohloh or TrolPCI stats)



Trolololol lololol lololooooo



(http://www2.research.att.com/~bs/applications.html )
Last edited on
closed account (z05DSL3A)
xoreaxeax wrote:
This is why good programmers learn new languages.

While it is true that a good programmer will learn new languages, I would not say that a good programmer would drop a mature language in favour of an immature one.

xoreaxeax wrote:
Java is already a king, since the time it replaced C++ as the most popular general-purpose programming language

Mere popularity should not be considered a proper test of merit. Frameworks like Java and .net make is easier for people to 'glue' bits together and produce 'something', this makes them more popular not necessarily better.
closed account (oz10RXSz)

I would not say that a good programmer would drop a mature language in favour of an immature one.


Scala is mature - it can leverage 99% of benefits from two mature platforms. Twitter and LinkedIn have proven that. If big enterprises pick a language used and designed by hackers for hackers, then it is the best test of merit.


Mere popularity should not be considered a proper test of merit.


Popularity should be considered a proper test of merit if you want to use language in practice and **earn money** which is all this thread is about. The higher popularity, the more high quality code to reuse. The higher popularity, the more resources on the Internet. In a different thread someone asked for a sparse matrix library for C++. It is funny to see there is nothing at this level of advancement as those for slow, ugly, toy Java :D

Choosing a language that had its golden age many years ago (circa 1998) is not a good strategical decision.


(http://www2.research.att.com/~bs/applications.html )

This list is quite short compared to the list that could be created for Java, .NET or pure C, and many of the applications listed there are already legacy code. Additionally, most of the companies using C++ restrict its use to C with classes, prohibiting usage of advanced features like templates, exceptions (sic!), constructors, Boost etc. See Mozilla and Google C++ style guides. Pure old Java 1.0 is less limited than that.

Last edited on
This list is quite short compared to the list that could be created for Java, .NET or pure C
Virtually any program can be written in any language
closed account (z05DSL3A)
xoreaxeax wrote:
Scala is mature - ...

Keep up, I didn't mention anything about Scala.

xoreaxeax wrote:
Popularity should be considered a proper test of merit...

Well in that case Scala can't be up to much as it come way down the list on http://langpop.com/

Re: **earn money**: The last time I looked, In the UK C++ programmers eared more money than the 'more popular Java' programmers. The thing about ubiquity is that its value drops.
@Everyone
xoreaxeax will never listen, I feel sad for him/her :(

No one said C++ is perfect language. Though I haven't work professionally yet, I'll let you win (Java/C# programmers earn more money than C/C++ programmers) just to.. you know...

But one thing is for sure, C/C++ is an art that is fun to play with.
This is a minor limitation. Better no operator overloading than broken one (please overload && in C++ to be semantically equivalent to the builtin, if you disagree).


LOL. You obviously have no idea what operator overloading is if you have to ask why overloaded && || don't short circuit.

Not true. You obviously do not know Java.


Thanks for not providing a reference to correct me.

YAGNI. If you need to use any sort of generic container or template, you've probably already screwed .

Fix'd

Java is a compiled language


Instant fail.

Anyway, you're a troll so...no more responses from me.
Am I missing something?

IIRC, C++ is the most widely used language, professionally... And, well - Professionally would be the way to go to earn 'dem moneyz.


Knowing C++ is one of the minor requirements of getting a programming job (just generalizing here), am I wrong?


It does indeed smell like trolling in here...
Pages: 12345... 7