Choosing a programming language
Although it’s probably the first thing that would-be programmers should consider, sometimes, choosing which programming language to learn or focus on is a daunting task. As a newbie, you might be looking for the perfect language that could do whatever you want. However, as you start you search for such a language, you’ll soon find that there is no such thing. Each language has it’s strengths and it’s weaknesses that makes them unique from the pack. And that in mind, your choice should coincide with how you think and what you intend to do which in turn will not only affect your productivity, but also your development habits,
Why not just pick a language at random? That would definitely cut your time by eliminating your reviews of other available options but then again you’ll be limiting yourself by not knowing what you can and can’t do with your chosen language. Knowing is half the battle after all and with software development, knowing less about your choice of language means less useful features for your software.
Compiled vs. Interpreted
You might find this comparison rather confusing because all this time, after learning your programming aptitude from books and your peers (or school if it’s given as a subject) programming is classified into structured and object-oriented programming. While this holds true with the development stage, this comparison is based from the concept of implementation and deployment. Read more on OO on the next part.
A compiled language uses a compiler program that translates the source code into a language that your machine can understand (like an exe or jar file) or machine code in short. After being compiled, the program will run via the executable without a need for it to be re-compiled.
The advantages of compiled languages:
- Execution speed: because it lacks the need for recompilation, compiled programs run faster.
- Code Hiding: like as with most propriety software, you can close-source your program and prevent you competitors from putting you out of business.
An interpreted language is translated from source code to bytecode at runtime, with an interpreter program.
The advantages of interpreted languages:
- Flexibility: changes to your program can be made on the fly without the need for a recompile and you are not confined to a single operating system environment
- Dynamic typing: the data types are not (wholly) declared on variables
- Ease of Debugging: self explanatory
To OO or not to OO
Implementation of Object Orientation should depend mainly on what you are working on. Although some people do not consider it a good practice to switch on and off between it, I think it’s sensible. When you’re creating a program for just say Hello World, why in the world will you waste your time trying to implement it in OO? Sure it will look pretty code-wise but objectively it’s just a waste of time. Finding when and where to use object orientation is the key which is why a mixed-paradigm language should be your first choice because it gives you the option of using OO or not.
Linux, Windows, Mac, Solaris
If you wish to go into web development then a portable system will always be more sellable than a native one. Note that there will be some changes on your software’s behavior in different environments so if you plan on going multi-platform, be sure to test things out on any available operating system and try to work the kinks out.
Going native is also a good option because although it limits you to one operating environment, your software has full access to any and all services that”s included in your system. Visual Basic 2005 and the .NET architecture is a prime example of this integration.
Am I secure
it’s a question that large developments always face. Some languages are more secure than others regardless of implementation (although that’s not a good practice, you MUST ensure your software is secure at all times) which is why developers flock to them when creating specific softwares. Try to get around what’s hot and what’s not. Here’s a few things you should add to that checklist .
- Strong typing
- A test framework
- Garbage Collection – a must!
There will be times (although not often) that you will need to work with 2 or more languages at once which is where the question of integration pops up. One reason for this could be that a part of your software can be integrated much more efficiently if you use the language B while language A makes up the rest. Although I have yet to encounter a project that requires me to do this, there have been some instances that my job would have been a lot easier if I had chosen to integrate a 2nd language instead of sticking to one. Visual Basic.Net and C# is a prime example.
Where to get help
You should always know your sources. Whether you stick with e-books or go to online sites and forums for help, you should know where to look for answer to your questions. How to’s, troubleshooting, and learn by example stuff can be easily found in the language’s respective communities so be sure to ask around.
My current sources of information include:
- Books and ebooks
- Forums and blogsites dedicated to my preferred languages (java and now PHP at the moment)
- Daily and/or weekly emails from developer sites like Code Project
- My peers who specialize in their fields of expertise
Pardon the excessive reuse of the word language and the repetitive references to VB.Tags: software-development