Click to See Complete Forum and Search --> : Best Programming Language/Compile


SkyCastleSoftware
December 26th, 2006, 04:21 AM
Ok here is a lil background of me, so Im building a company from the ground up. Its going to take a while. Im developing software. All kinds, like organizing programs for businesses or some nerds lol, programs to speed up the comp, programs to customize windows, so on and so forth. So a wide variety of software.
I've used, VB6, VC6, VB.NET, C#.NET, C++.NET, Borland C++, Java, and some others.
I have an extensive background of programming itself. I can easily pick up new programming languages. I taught myself everything about .NET. I can just look at sample code and understand it and use it in my program without reading up about it.

Ok so I come to my issue at hand which I think others have too, or at least ponder a bit on. Which of these languages or version/compiler is the best for, well.... The best of the best. Like for personal, business, and corporate?

Let me put my two cents in....
In my experience in the above languages, I have seen that:

--C++ is the best language for practically any program. But which Compile? the old, VC6? The .NET version? or the new Borland C++? or any others Im not aware of yet
--VB is a simple yet nifty lil language. But I would only recommend it for starting out or just messing around
--C#(Sharp) is the in between of VB.NET and C++.NET. Its pretty simple, yet its powerful like C++. But still falls short of, well lets say my expectations. see why below
--.NET in General. Well, u kno I just dont like .NET. Microsoft is not that smart when it comes to this stuff. The .NET Framework is a hassle. It drags programs down. And because ur program "has to be" depended of the Framework it makes it hard for the average user to use ur program.
--Java, o man. this language deff comes dead last. When I was taking classes for Java, I was very disappointed. The program was veryy slow. A pain to build. and like the .NET framework, ur program was depended on Java software. Because Class files where in an intermediate language like .NET programs are.

So as an overview, I pick C++, but not from .NET.

Now I have a question to go along with this topic.
Which C++ Compiler is the best? VC6?, Borland C++(Similar to .NET), or some other I havent used?

I dont think I was vague at all. If I was a lil unclear on something let me kno. But I would like to here anyone's thoughts on there programming experience in any language.

SuperKoko
December 26th, 2006, 07:03 AM
I don't think there is a best language for all purposes.
Using several of them is not a problem.
You just have to use the right tool for your job.
You will probably learn, with experience, when to use each language... Taking in account all the following elements.
1) What type of application is it?
2) But also: Is it only for personnal usage, or do I want to distribute it to other people?
3) And: How much programming time can I invest in it? In other words... Choose a ratio software quality versus programming time.


Now, once you've taken in account those things, you can see which language (or combination of languages) best fits your needs:
C++ is probably the best (not always for a programmer point of view, but from a user point of view) for:
1) Desktop applications
2) And small utilities and for "customizing" windows.
3) It's the best for distributing applications, because users don't have to use a large framework they don't like. Plus, C++ code is quite portable (though, portability issues highly depend on the nature of your application).
4) C++ produces high quality software (good speed and good maintainability).

The .NET framework is very good at business applications using databases, and is good at web applications.
In fact, the .NET framework contains a lot of easy to use classes for interfacing your program with a lot of things.
So, before choosing a .NET language, you should first choose whether the .NET framework fits your needs:
1) It is powerful, and especially easy to use, meaning faster development and good maintainability.
2) But not necessary higher quality software.
3) And, it doesn't give you the same control power on operations than C++ because interfaces are higher level.
4) It is a large framework and consequently is not ideal for distributing applications.... Moreover it's not very portable.... It's almost restricted to the Windows platform.

If, you choose to use the .NET framework (for example for developing in a short delay, a simple web server application that you don't intend to distribute), then you'll have to choose one or more .NET-interfaced languages.

C# is:
1) Safe.
2) Easy to use and development is fast with it.
3) Quite powerful, but not as powerful as C++
4) Maintainable.

C++/CLI:
1) Gives you more power, but is more dangerous (memory violations & co, are more likely to happen... at least if you use all the power of C++)
2) Is still quite easy to use (at least if you know well the C++ language and the .NET framework)
3) Gives you a lot of useful language features such as template metaprogramming.

So, if you wouldn't use any of the C++ specific features, C# is probably better. But, if you miss C++ features, C++/CLI is the best choice.

VB.NET is a bit different from C#, but there is no huge difference... So, here, use the language you like the most.

Java framework strong points are approximatively the same than the .NET.
However:
1) The Java framework must exclusively (or practically exclusively) be used with the Java language which has a design that many don't like (VB.NET, C# and C++/CLI are better designed with usuability in mind). And the framework is not always very well designed.
Things like the lack of passage by reference, the lack of RAII, and a few other annoying things are not pleasant when programming.
2) Java is far more portable than the .NET framework, so if you want to distribute the software, it's a better choice than the .NET framework... But, for personnal use, it's not great.
3) There are optimized Java frameworks, so, Java is not always slow, nowadays. The framework is bloated, however (as the .NET framework is).

So, if you've learned all these languages, the choice Java framework vs .NET framework will probably be done on the portability issue.

"Classic" VB (i.e. VB 4, 5 and 6, which are not related to .NET) is usually more a toy than a serious programming language, but:
1) It allows you to develop in a few seconds a GUI. The true code doing the work is not necessary in the VB module, but may be in a C++ module.
2) It's very good at interaction with COM components. For testing objects having a IDispatch interface, VB can be useful.
3) It tends to produce ugly programs (though, it's possible to write proper programs in VB), and its annoying limitations (lack of efficient dynamic binding, lack of pointers & other things) doesn't make programming large projects enjoyable.

So, except for tests, you'll not use classic VB often.


Which C++ Compiler is the best? VC6?, Borland C++(Similar to .NET), or some other I havent used?

Here, a simplier answer is possible.

The best pure C++ (i.e. without Windows and .NET specific extensions) compiler (at least from my point of view) I know is GCC.
Under Win32, GCC+its environment is known as MinGW, that you can freely download and use since it's an open source project.
1) It's almost fully ISO compliant (except for the 'export' thing and very few bugs).
2) It produces good code (but GCC is usually in top three for program speed).
3) Compilation is a bit slow, but it is acceptable (even on my K6-2 550Mhz CPU).

Borland C++ and Digital Mars Compiler (especially DMC) are less good on all points, except that they compile faster (they don't produce faster code, but compile in less time). So, for testing code, they're good.

VC++6 is very old and almost unusable because its ISO compliance is too bad, and there are too many bugs.

For C++/CLI, you've not much choice: You have to use Visual Studio. Modern versions are good.

So, for C++ compilers I would suggest either:
1) Using MinGW and Microsoft's C++/CLI when you have to use managed code.
2) Or: Using exclusively Visual Studio for managed code as well as for unmanaged code.
3) Or: Using exclusively MinGW if you happen to never use C++/CLI.


And other languages do exist:
You may want to learn Perl... Warning: You may fell in love with it. :p

SkyCastleSoftware
December 26th, 2006, 07:38 AM
Wow!
Impressed!

Thanks! that was all very useful! :)
Im not a beginner at programming. But im not a pro either lol

And on the Perl thing. Im ahead of u on that lol. I've already been learning it. and I do advance web programming in php. My host supports them both. :p Like I said Im building my company from the ground up. Web site and all.

Thanks alot tho

Any one else got some input?