Posted on 07/06/2009 12:40:46 PM PDT by ROTB
I'm writing a desktop application that I'd like to deploy onto Windows, Macintosh, and Linux. I'm trying to pick the language that will give me the most conveniences, without setting timebombs that will go off down the road.
Here's what I think I know so far:
C++ Pros:
1) resulting code runs fastest, provided I am not a bonehead
2) most flexibility in memory management
3) Maximum difficulty in reverse engineering my object code, though there is nothing revolutionary or complex in what I plan to write.
4) Tools are rock-solid.
C++ Cons:
1) memory management is the biggest hassle, though garbage collection, usage of stack, pools, and smart-pointers, can mitigate this. 2) cross-platform programming requires much work for me to manage
Java Pros:
1) Cross platform programming handled
2) Memory management easier relative to C++
3) Lots of Tools, fairly mature
4) many years of advancements over C++
5) "Hot-Spot" compilation can make code run nearly as fast as C++
Java Cons:
1) 10 Megs of runtime need to be packed up with my app, since users might not be technical enough to install a JRE on their own
2) Code is more easily reverse engineered than C++, but how good are the obfuscators?
C# Pros:
1) Through Mono, I can deploy in lots of places
2) I get to use Developer Studio initially, and then use less capable IDE's for porting
3) Handles garbage collection, and does more for the programmer than C++.
4) Lots of libraries.
C# Cons:
1) I might have issues with Mono working exactly like Microsoft's runtime.
2) What did I forget?
C# Questions:
1) Does it compile to machine code, or bytecode? If bytecode, does that compile to machine code?
Python Pros:
1) Clean expressive syntax
2) Cross platform programming handled
3) Memory management easier relative to C++
4) many years of advancements over C++
5) More rapid iteration, since the projects needs not be compiled.
Python Cons:
1) Bytecode can be reverse engineered, but "Shed-Skin" would make the resulting code as fast and as difficult to reverse engineer as C++, BUT "Shed-Skin" is a work in progress, and if the lead-programmer dies, I would have to pick up the slack. I might also need to find bugs myself.
Personally I like Python with wx.Python for GUI stuff. Runs on Windows, MAC, and Linux just fine.
I went and picked up Microsoft Visual Basic Deluxe Learning Edition Version 5.0, Microsoft® Visual C++® .NET Deluxe Learning Edition—Version 2003 (Pro Developer), and Programming Python. With what you provided and this I have a good start on programming. Once thanks for all the help.
Thanks for the tips AppyPappy. :) I am playing around with the VB right now it looks cool.
Within the Java orbit, there are also Scala, Clojure, Groovy, and Jython. Scala gives you all the power of Java with a much more powerful syntax. Clojure relaxes the typing constraints without too much sacrifice in performance. Groovy is a scripting language designed to appeal to Java programmers. Jython is a Python on top of the JVM.
Just one note: GTK is primarily a C library, rather than a C++ library. I know it has C++ bindings, but it works best with C.
After having supported Control Data operating systems for 15 years with other companies, I was hired by CDC in the early 80’s. One of their software experts came into my cube the first day with a Peripheral Processor dump and asked me to look at it. After a couple of minutes, I looked up at him and said, “This has to be off a NOS/BE operating system.” He asked ,”Why?”, and I said, “Because no NOS proggrammer would even think to do code modification on the fly, but it’s done by NOS/BE programmers all the time.”
He said, “You passed the test.” We became best friends.
The only Control Data hardware I ever saw was a 10MB (5 internal, 5 removable) 14” hard disk drive used with my dad’s Alpha Micro system. A few years later he bought a 20MB Winchester drive the size of a VCR. It could fit inside the bottom of the CDC cabinet. It blew my mind.
Control Data Corporation Magnetic Peripherals division used to make removable hard disks (844’s) and 885’s for all the mainframe vendors. Magnetic Peripherals became Imprimis and was sold to Seagate.
You’ve see a Control Data mainframe I bet. They had one in the Nokitome Plaza in Die Hard 1, and I think (someone will correct me on this) they had one in Jurassic Park.
I worked on the OS for the 6000 series (Scope 3.3-3.4 and NOS/BE), 170 series (NOS/BE and NOS), the 7600 (Scope 2), 800 series (NOS and NOS/VE), 900 series (NOS/VE) and some of the really fast (for their time) specialized parallel processor systems CDC made (AFP, CyberPlus, and micro AFP). Never got to work on the ETA (liquid nitrogen or air cooled), but I saw one once. My languages were Compass (CP and PP), MICA, Fortran (Run and FTN), COBOL, and C. I also knew ALGOL and IBM assembly language from college. No Pascal...
Correction on the 900 series - that was IRIX (UNIX). The 900s were Silicon Graphics workstations with CDC skins on them.
Disclaimer: Opinions posted on Free Republic are those of the individual posters and do not necessarily represent the opinion of Free Republic or its management. All materials posted herein are protected by copyright law and the exemption for fair use of copyrighted works.