Which language to go with?

Hi guys,
I need someones expert opinion on this. The company i work for wants to create a major complete software package, tailored specifically for the courier industry.
Now my question is, which programming language and db would most be suited for the creation of this task?. And what wold be the pros and cons of such a language in the context of a courier industry.?.
Does anyone know what FEDEX and DHL uses?.
Your help on this would be much appreciated.
Who is Participating?
mindstormsConnect With a Mentor Commented:
So little information for such a big question.  Unfortunately, I don't know how the FedEx and DHL systems are designed.

The right way to go about this would be to gather requirements and then pick platforms, languages and a database to meet those requirements.  

You mention FedEx and DHL.  Are you really looking to build something on that scale?  That would be an enormous undertaking.  You'd be talking about hundreds or even thousands of point-of-sale terminals, interfaces to freight scales, hand-held scanners with fine-grain tracking at every step of the way, warehouse terminals, and this just scratches the surface.  Or you talking small scale like bicycle couriers in one metropolitan area.  Different requirements lead to different answers.

A FedEx-scale system would require the best and most robust components and tools.  A world-class database solution such as Oracle or Microsoft SQL server would be essential.  You'd need the utmost in scalability, reliability, uptime, redundancy, load-balancing, backup, etc.  MySQL and similar inexpensive solutions are simply not up to the task.  If you have something as big as a FedEx to keep running, you'll want first-class customer technical support.  The language you'd use for server-side processing (such as Java servlets or stored procedures) will likely be different than what you'd use for point-of-sale terminal clients (such as Java or MS Visual C++), which might be different from what you'd use to code handheld scanners, etc.

The bottom line, in my opinion, is that there isn't enough information on which to base a recommendation of one language over another.  You would have to determine the requirements, design a system and then pick the right tools to for each subsystem's architecture.  Here are some of the considerations I would keep in mind when evaluating the language for a particular subtask:

C is completely unacceptable for such a complex system, regardless of the scale.  You really need object-orientation to keep the complexity under control.  The only exception might be in the embedded, hand-held area where C (or worse) might be all that's available.  I'd tend to avoid such hardware products though.

Generally, C++ is a very mature object-oriented language, suitable for large-scale enterprise applications on the server side, client side and is available for many embedded solutions, such as hand-held computers.  There are many capable C++ programmers looking for work at the moment.  Compared to Java, it usually provides considerably faster performance, but memory management is harder, requiring good engineering practice to avoid common pitfalls such as memory leaks, uninitialized variables and dangling pointers, etc.

Java is a much improved C++.  It is easier to learn and many of C++'s pitfalls have been designed out.  However, it is slower performing, and there are fewer proficient Java programmers than there are C++ experts.  Java IDEs (integrated design [or development] environments) are inferior to tools like Visual C++ or Borland C++, particularly in the screen design area.  This doesn't matter much for server-side programming, of course.  Getting Java to look similar among various browsers with different virtual machines is often a chore.

Visual Basic, though improved over the years, is insufficiently mature enough to be used in an enterprise application in my opinion.  It can be useful, however, for rapidly creating client-side screens for requirements and design documentation.  

I have no direct experience with the Microsoft abberants such as C# and the like.  I loathe tying myself too tightly to Microsoft's modifications of international standards.  However, I have friends who love the Visual Studio and claim more rapid development time than with other solutions.

I hope this is helpful.
depends on what os you use......for instance if you use multiple os...you might want to look at java..... only need to code it once.....

c# seems to be the hot thing this time around if you are on a windows os.....
c# is basicly a mutant child of c++ and java
Firstly, consider the factor within the decision making processes such as Product pricing, Features, Scalability, Platforms, Interoperability and finally the Team's core competency. In short, let the market reality guides these factors.

Product Pricing - Lower pricing means the project has serious engineering constraints, which will influence which Middleware such as Relational Database to use, time to develop & tests including the number of features to addin.

Software Features - More features, takes more time to develop and TESTS. Let an actual courier business guides you in setting the features. Study their processes, decide current basic features and potential future features.

Scalability - Does your product have any scalability plans? Scalability to Enterprise level software requires some serious planning to avoid dead end, hence dictates which language to use.

Platforms - Unix, Linux, Windows? Starting with MS is relatively cheap, but they hit you in a serious manner when one wish to scale further up.

Core Competency - What does your team knows really well to begin with? Working with a new or less than knowledgable language can be a bit of a time mismanagement.

IMHO - Looking at the future trend and considering the product in a network world of interoperablity. I feel using Java has some serious benefit. Regarding Relational Database, for almost enterprise level software... MySQL is the choice, using Java Database Connectivity API.

Otherwise, try use on of those Rapid Application Development (RAD) languages such as Visual Basic.Net, Delphi and etc to cut down on development time.

Java and MySQL information:

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

>> c# is basicly a mutant child of c++ and java

Personally I would say C++.  But then again C++ is the answer to everything ;)

When you mention couriers I assume there would need to be some synchronicity in the data.  This means some sort of central data storage.  This will require access to a database which has been dicussed above.  SQL Server would be recommended as it allows simultaneous connections.

If you are not going to be using Windows then I would have to ask why.  Most corporations use this, so if this is the case use C++ or C#; anything to build an exe.  Interpreting Java byte code is good for cross platform compatibility but it does not offer performance benefits over C++; in fact it is slower.

That is my opinion for a desktop application.

If you are going for a web based solution, you have many options.  php is good since it links very well with MySQL; but then again asp.net (aspx pages) are excellent since they provide a large library of features to the programmer.  Databases would again have to be SQL Server.

If you state if you are after a desktop or web based app people can provide more specific input.

If you care more about presentation to customers then go with VB,
If you care more about timely tracking system, then go with C

shaggyb,              ;-)
Jenn3Connect With a Mentor Commented:
FEDEX and DHL uses large scale datacenters to centralize their data. I believe they use at least two centers in different geographical zones.

FEDEX works with IBM Global Services very closely in some parts of the world, but not all regions. IBM have been implementing Linux servers for FEDEX for a while.

Reagrding your software, for small scale operation without any international offices or branches, but with multiple regional/state offices still requires a centralized database.

It is easy to jump into languages like VB for respectively smaller software companies with MS SQL.

This is how i would rank it based on clients budget:
Small: Java and MySQL or possibly VB.Net with MS SQL
Medium: Java or VB.Net with MS SQL
Large: C++ and MS SQL
Enterprise: C++ and Oracle

Relational Database Performance:
These are my personal thoughts based on experience. Others may argue MS SQL is more powerful if not equal to Oracle.

Language Preference:

The comments made by others do have some valid points about Java vis-a-vis slower execution (due to the Interpretor technique instead of Compiler) and lack of experience Java software engineer.

Personally, Java offers interoperation across various desktop terminal platforms to the Linux server. Your team must have experience with Unix or Linux. IT IS A NON-NEGOTIABLE REQUIREMENT. Yet if interoperation is not the concern, i would prefer using a 4th Generation Language like VB.Net as oppose to 3rd GL like C++ because it is faster to develop, visualize, prototype and get to a client evaluation beta release.

Don't use VB 6 as it is not completely Object Oriented. Away from work, i generally love the power of C++ and the depth of it. MOst of my personal tinkering is done in C++. It is a tested and tried language... Solid.

Any Software Engineering books will tell you the amount of time one can save using 4GL like VB.Net juxtaposition 3GL.

By the end of the day... it's really based on the Project Requirement and Your team's strength. Avoid starting a new project away from the core competency. It WILL create chaos and havoc in initial design and planning.

Good luck and Godspeed.
If you are truly trying to emulate a system on the scale of FedEx , then ignore any premature optimization decisions like comparing performance of C++ vs Java. your primary concerns are scalability, managing complexity, lifecycle cost and overall productivity. You also want an environment where the language doesn't get in the way of your design so you can focus on delivering timely business solutions and value. Unfortunately with the above criteria, C++, C#, Java in fact all within this family fail miserably when you scale the system and the team. As for the VB stable, these are only useful for rapid screen prototypes and layout, but thrown away. In my book, dynamic languages are the only ones that can cut the mustard in all areas and shine. There is a world after Java and some parts of the IT community are starting to see the light too, see:

My language choice: Smalltalk
And guess what FedEx use ? http://www.cincom.com/profiles/detail.html?id=10&html=Y

As for the choice of database, in terms of productivity, one element constantly underestimated by developers is the impedance mismatch between the object world and relation database world. In other words, one ends up writing a significant amount of code to translate between the two worlds. The mapping layer becomes another point of brittleness and and productivity bottleneck especially as your models evolve, because you must constantly keep your DB schema, data migration and your mapping layer meta data in step. Data persistence should be transparent and if not ultimately, certainly during your early development phases, you should consider an object database. Then, once the system design stabilizes, if there is pressure to go the more conventional relation DB route, you can add the relational DB and mapping, thereby deferring the cost of this in your project as late as possible.

My OO DB choice: GemStone
My relational DB choice: Postgres

Hope that helps and good luck.
i am working in VB for about 3 years, and really i cant do complex things with it, its so limited but fast.  and you cant create good packages.

but if you wanna go with Microsoft , the best Database is MS SQL server, Programming languages: Visual C++ or C# .NET.

As others said time, application, current knowledge.
I Never worked with other languages.
good luck

elusivesoulAuthor Commented:
Apologies for the late reply, i had to go do further research basesd on the info given on the postings. thanks heaps guys, i have now got a fair idea of what to go with. Much much appreciated.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.