Asking which programming language is best sounds alot like asking:

Which is better, a wrench, a hammer, or a screw-driver?

The simple answer would of course be: Pick the tool as it suits the task.

I think this is going to explain them alot better:

C is well-suited to modular, functional design and development. It suits layered processing and can handle inline calls to assemblers. C serves as a good language in which to write operating systems, compilers, and device drivers. It's a good language in which to develop other languages. C source is compiled to executables for particular platforms, i.e., machine architecture, OS, etc.. The programs will, therefore, both start and run fast on the platforms for which the are compiled.

C++ is the OO extension of C. It is class-based object model. This makes C++ well-suited to any problem-space that decomposes naturally into objects. Since most desktop applications, games, and even enterprise systems can be successfully decomposed into an object model, C++ is good for these. As with C, C++ is compiled to executable form for the target platform.

VB can do most of what C++ can, but is designed to be "easier" to understand and apply. There are performance and scalability trade-offs in favor of ease of development and support. There is a general snobbishness about VB by lots of "real" programmers that VB is not a "serious" programming language. That's an incorrect view, but VB is not as widely used for major apps as is C++ as a result of this impression.

Java can operate in all of the problem spaces of C++, but was intended to be "write-once-run-anywhere." This capacity is due to the fact that Java source is compiled not to executables for specific platforms, but instead bytecodes that can be interpreted by a "virtual machine." A virtual machine is an interpreter written to convert bytecodes into executable form for a particular platform. Any platform that supports Java has one of more implementations of a virtual machine. Java "runs" in the VM not directly on the OS layer. This has the performance drawback that each new object instance must be interpreted from bytecodes, causing additional overhead that can make a Java seem slower to start. The great virtue of Java is that you don't have to worry about the platform to which the program will ported...that's the VM's concern (if you write "pure" Java).

I've written C and Java seriously. I've fiddled with C++. Never wrote a lick of VB, but have worked in shops that used it for "real" business apps.

In general any of these languages can be applied to do any task - they are all general purpose languages. Without a better feel for your interests in programming, it would be difficult (or merely indicate my personal biases) to commend one above the others.

That's my overview from the edge of the galaxy.

Code::Blocks is a free C++ IDE built to meet the most demanding needs of its users. It is designed to be very extensible and fully configurable.
Finally, an IDE with all the features you need, having a consistent look, feel and operation across platforms.
Built around a plugin framework, Code::Blocks can be extended with plugins. Any kind of functionality can be added by installing/coding a plugin. For instance, compiling and debugging functionality is already provided by plugins!

Here are the features of Codeblocks:

Highlights:

  • Open Source! GPLv3, no hidden costs.
  • Cross-platform. Runs on Linux, Mac, Windows (uses wxWidgets).
  • Written in C++. No interpreted languages or proprietary libs needed.
  • Extensible through plugins

Compiler:

  • Multiple compiler support:
    • GCC (MingW / GNU GCC)
    • MSVC++
    • Digital Mars
    • Borland C++ 5.5
    • Open Watcom
    • ...and more
  • Very fast custom build system (no makefiles needed)
  • Support for parallel builds (utilizing your CPU's extra cores)
  • Multi-target projects
  • Workspaces to combine multiple projects
  • Inter-project dependencies inside workspace
  • Imports MSVC projects and workspaces (NOTE: assembly code not supported yet)
  • Imports Dev-C++ projects

Debugger:

  • Interfaces GNU GDB
  • Also supports MS CDB (not fully featured)
  • Full breakpoints support:
    • Code breakpoints
    • Data breakpoints (read, write and read/write)
    • Breakpoint conditions (break only when an expression is true)
    • Breakpoint ignore counts (break only after certain number of hits)
  • Display local function symbols and arguments
  • User-defined watches (support for watching user-defined types through scripting)
  • Call stack
  • Disassembly
  • Custom memory dump
  • Switch between threads
  • View CPU registers

Interface:

  • Syntax highlighting, customizable and extensible
  • Code folding for C++ and XML files.
  • Tabbed interface
  • Code completion
  • Class Browser
  • Smart indent
  • One-key swap between .h and .c/.cpp files
  • Open files list for quick switching between files (optional)
  • External customizable "Tools"
  • To-do list management with different users
And many more features provided through plugins!



Build system

Code::Blocks implements a custom build system with very important features: ultra-fast dependencies generation, build queues and parallel builds are the most important ones to mention.

Debugging

The debugging subsystem has been greatly enhanced in the latest version. Automatic/manual watches, code/data breakpoints, call stack, disassembly listing and memory dumps are only few of its features.



Download CODEBLOCKS for free at Free Codeblocks IDE

BEST C++ COMPILER

Posted by John Onam | 7:23 AM

If I am asked to recommend C++ compiler, I would go by Bjarne Stroustrup's advice which goes thus:

However, I don't make recommendations; that would be too much like taking sides in commercial wars. Also, I don't know every C++ compiler; there are simply too many "out there". I use half-a-dozen C++ compilers on a regular basis, but that's only scratching the surface.
I recommend that people take Standard conformance very seriously when considering a compiler. If you can, avoid any compiler that doesn't closely approximate the ISO standard or fails to supply a solid implementation of the standard library. The recent releases from all the major C++ vendors do that.
If you are a novice and don't know how to see if a compiler is conformant, try this:

#include
#include
using namespace std;
int main()
{
string s;
cout << "Please enter your first name followed by a newline\n";
cin >> s;
cout << "Hello, " << s << '\n';
return 0; // this return statement isn't necessary
}


If an implementation cannot handle this simple program as written, it is not a good candidate for learning Standard C++ (if you cut and paste, beware of html for "less than" in the #include directives).


Though now outdated in all details, here is a long article considering conformance and boost.org's compiler status page. Conformance is just one aspect of a compiler's quality (quality of generated code, error messages, compile speed, integration with tools, degree of support, and backward compatibility are examples of other important aspects), but conformance is an important one. Use of a supplier's language extensions and non-standard-conforming features limits the portability of your code and can prevent you from choosing a new implementation supplier.
Most of these compilers are embedded in frameworks of software development tools and libraries. These frameworks, environments, and libraries can be most helpful, but do remember that their use can lock you into a single vendor and that some uses have significant run-time performance implications.


When looking for C++ on the web, you find that much of the information is "hidden" under various product names. In fact, I had more luck finding C++ compilers using google.com than by going directly to vendors that I knew sold them. Here, I have chosen to list C++ implementations simply by the name of their provider, ignoring marketing labels.
Some compilers that can be downloaded for free (do check their conditions/licenses before attempting commercial use):

Apple C++. It also comes with OS X on the developer tools CD.
Bloodshed Dev-C++. A GCC-based (Mingw) IDE.
Borland C++
Cygwin (GNU C++)
Digital Mars C++
MINGW - "Minimalist GNU for Windows". Another GCC version for Windows including a free (non-GPL) w32api.
DJ Delorie's C++ development system for DOS/Windows (GNU C++)
GNU CC source
IBM C++ for IBM power, System Z, Bluegene, and Cell.
Intel C++ for linux
The LLVM Compiler Infrastructure (based on GCC).
Microsoft Visual C++ 2008 Express edition.
Sun Studio.


Some compilers that require payment (some allow free downloads for trial periods):
Borland C++
CodeWarrior C++ (formerly Metrowerks), it comes for many platforms.
Comeau C++ for many platforms
Edison Design Group C++ Front End - used by many C++ compiler suppliers
Green Hills C++ for many embedded systems platforms
HP C++ for Unix and HP C++ for OpenVMS.
Intel C++ for Windows, Linux, and some embedded systems.
Mentor Graphics/Microtec Research C++ for many embedded systems platforms
Microsoft C++
Paradigm C++, for x86 embedded systems
The Portland Group C++ (parallization for Pentiums)
SGI C++, optimizing compiler
Sun C++
WindRiver's Diab C++ used in many embedded systems.


It is impossible for me to keep this list complete and up-to-date. The C++ world is just too large and too much new is happening. Apologies to those suppliers who I failed to list, I know there are some, and please, if you have a link that you think ought to be listed here, send me a message: bs at research.att.com. Again: I just list compilers, I don't endorse them. Also, there can be no one compiler that is best for everyone, people's needs differ too much for that.
Other lists of C++ compilers:

The open directory project.
Compilers.net: A list of free C and C++ compilers.
A filter to improve error messages from many compilers see STLfilt.

I think this is more comprehensive for anyone asking which C++ compiler is the best. Cheers!

Posted by John Onam | 2:32 AM





Black screen Vista boot up error

Posted by John Onam | 8:18 AM

If you got a black screen that says: WINDOWS ERROR RECOVERY , then you are in the right place.

I have had this problem and have been one of the lucky few to get round it.
Although in my case, I do not know the cause, if you have encountered the same problem, you will need to follow the same steps like I did to get around it successfully.

I got this issue early in the morning after booting my system, the system started up but then, after that i got this 'black screen of death', I then went on to many forums to find out the best options for solving this, I knew there was a definite way to fix the problem with a full destructive recovery with the recovery partition you get with vista, however i didn't want to lose all my data.

So I switched OFF my computer restarted it.

I tapped F9 continuously to open Boot Menu.

When the menu came up, I tapped F8 and got several menu options.

The top option should be 'repair my computer', Click on it.

You should now have a very basic log in window which has your Username, (if you have no password just press enter, but if you do type it in and press enter).

Now you should have several options of recovering or repairing your PC.

The most successful so far is a normal windows restore which takes the computer back a few days, I would recommend a week if available.

Once completed, Click Restart to start up your computer. This should get rid of the 'black screen of death'.

Once logged on run command prompt with administrative properties then type in sfc /scannow

This will hoefully find anything else which is corrupt. I have found the main reason for this is actually vista's own way of performing better... on most people with this problem I spoke to had an option enabled on the hard drive by default : 'Enable write caching on the disk' : 'this setting improves disk performance, but a power outage or equipment failure might result in data loss or curruption' this option can be found by going into device manager - find your primary hard drive, right click, properties, policies. this is the closest ive found to a cause of this 'black screen of death'

http://en.kioskea.net/forum/affich-176196-black-screen-vista-boot-up-error

Criteria For Acquiring Software

Posted by John Onam | 10:29 AM

Criteria for Acquiring Software Packages

Choosing software for a certain department or company is not just a matter of checking the prices. The real cost of a product includes the price of the software and the cost of implementing it as well. As I browse the net, I found this presentation by an international, award-winning author John Hedtke that shows how to identify the features you need, the features you want, and the features you don’t care about. The presentation also discussed ways to determine other important selection criteria, such as the hardware and operating system requirements, the product’s interoperability with other departments, new and intermediate user training requirements, and the need for continuing product support. You’ll see how to create a list of selection criteria that accurately reflects your needs and priorities, evaluate the products that may fulfill your criteria, and make a selection. The presentation concluded with tips on evaluating the product’s appropriateness after you’ve been using it for a month or two.
Criteria for acquiring Software Packages:

1. Hardware and Operating System Requirements

2. Product's Interoperability with other Departments

3. New and Intermediate User Training Requirements

4. Need for Continuing Product Support

5. Price of the Software and the Cost of Implementing the Software

Hardware and Operating System. Acquiring software package needs examining performance. When you examine performance, a number of factors influence how much capacity a given hardware configuration will need in order to support a given application. The hardware capacity required to support your application depends on the specifics of the application and configuration. You should consider how each factor applies to your configuration and application. Choosing an Operating System considers the following factors; Stability and Robustness, Memory Management, Memory Leaks, Sharing Memory, Cost and Support, Discontinued Products and Operating System Releases. Selecting right hardware leads to great software performance, choosing hardware considers; I/O Performance, Memory, CPU and Bottlenecks (Solving Hardware Requirement Conflicts).

Product's Interoperability. Product's Interoperability with other Departments criteria defines the term Inter-operate, the ability of diverse systems and organizations to work together. Interoperability is used to describe the capability of different programs to exchange data via a common set of exchange formats, to read and write the same file formats, and to use the same protocols. (The ability to execute the same binary code on different processor platforms is 'not' contemplated by the definition of interoperability.) The lack of interoperability can be a consequence of a lack of attention to standardization during the design of a program. Indeed, interoperability is not taken for granted in the non-standards-based portion of the computing world.

User Training. According to Jonathan Wu, a columnist in Information Management Online said that, Each software company that develops Business Intelligence (BI) applications offers training courses on their products. The goal of this standard BI training is to demonstrate the features and functionality of the application to the customers through lecture and lab exercises. Most companies that purchase a BI application will have users attend the standard training that is provided by the BI company because it is readily available and requires very little preparation or planning.

Product Support. Need for Continuing Product Support Offers a wide range of product and service solutions. This criteria will provide the end to end support you need to control costs and maximize value for your product returns. From returns management through fulfillment, channel remarketing or recycling, this criteria will support your specific product returns needs often at a substantial savings over other options.

Cost. Software licensing cost is among several major cost factors that must be considered when acquiring software packages. The real cost of a product includes the price of the software and the cost implementing it as well. The real cost of a product includes the price of the software and the cost of implementing it as well. Contributing to the overall cost of implementation are costs associated with; Computer hardware, Database platform, New System Maintenance, Old System Maintenance, Data Conversion services, Project management services, Technical training and User Training.