Thursday, August 15, 2019

Influential Factors in Choosing a Programming Language Essay

* To help Gary make decisions about which language to choose, you are asked to provide Gary a list of key factors and their importance in choosing a programming language. Overview of Report When it’s time to develop a new program, the first thing that must be considered is the decision on what programming language to utilise. This is important because changing the program midway through completion is very difficult to achieve, and will often require a vast rewriting of code. There are a number of issues that will influence this decision, and these are: * Organisational policy, suitability of the language, the availability of trained staff, how reliable the program is, cost of development and maintenance, expandability of the language, and interoperability with other languages Organisational Policy All organisations will have policies (methods of practice) dictating that they will operate under specified conditions. A policy of developing applications using one particular language may come from historical use, and a foundation of previous development tools (such as IDEs) for that one language. (M Fishpool, 2007, p.156) To deviate to using another language may in that instance not make sense to the hierarchy of the organisation. This may ring particularly true if the organisation has established a relationship with a particular vendor, such as Microsoft. Maintaining a link with this company may be rewarded with better support and discounts. (Anderson, 2010, p.166) On the other hand, maintaining the use of a particular piece of software (such as Microsoft’s IDE Visual Studio) would limit language choice to those that suit that company’s interests. Another choice they may pursue is to utilise open source software, which brings its own benefits and disadvantages. Open-source software does not offer personalised technical support and relies on an unpaid, potentially unreliable enthusiast community to provide these solutions, but is usually free to use. Suitability Building a program in a language unsuitable for its intended task will cause big problems down the line, which is why understanding the application’s technical requirements is important. The first thing to consider when making a program is what the intended platform will be. This could be computer setups such as Windows, OS X, a Linux-based OS, a web-based application, a smart phone-based app or the option to be platform agnostic could also be desired. Languages that are built to be natively run on one platform (like C++) will be more effective in completing intensive tasks, but building a program in Java means that the application will work the same way on any OS with the Java Runtime Environment (JRE) software installed (Oracle, 2011). The complexity of the program will also affect whether a procedural or object-oriented language will be chosen, as is whether appropriate features are included in the chosen IDE. (Anderson, 2010, p.166) Availability of Trained Staff If a language is popular and used widely (such as Java, C, or C++ (TIOBE, 2011)), then there will be more professionals that are able to code in it than there are for less popular languages. Therefore, choosing a popular language will make it easier to recruit personnel for a new project. Also, looking at what languages the organisation has historically used, the kind of hardware installed, and what skill sets existing employees have will have an impact in this decision. Reliability A program becomes unreliable when how it will deal with data becomes unpredictable, and this is what can cause programs to crash. This is why some languages, like Ada, are created with an emphasis on features that make them less likely to crash. (Anderson, 2010, p.166) The best way of ensuring that code is predictable and reliable is to use a strict language, which is one with a strong type system. A strong type system specifies restrictions on how values of different data types (such as integers and strings) are allowed to be intermixed, and stops the source code from compiling if it thinks data is being incorrectly mixed. This provides a guarantee about how the program will behave when it starts running. (Wikipedia 2, 2011) Development and Maintenance Costs Part of the idea of planning the development of a program also includes the costing of the entire project. In order to do so, we take into account the length of time each development stage will take, and what resources will be needed at which point. A lot of resources are spent before the first line of code is even written to make sure that the language and IDE we choose will be the most suitable and acceptably reliable, because choosing an â€Å"unreliable solution means more money spent in maintenance costs.† (M Fishpool, 2007, p.155) Also, rather than simply creating error fixes, maintenance is also about how the program evolves post-deployment, as suggested by Lehman’s Laws. (Wikipedia 1, 2011) Therefore, how much of the overall budget will go towards the evolution of the application needs to be taken into account. Expandability Expandability is about planning the long term future of the program. Programs in active use will rarely cease to be updated following its first release. It will usually evolve beyond its original specification and require more features to be added, or be asked to process more data. If this is the case and the program is not easily expandable, a lot more time and money than necessary will need to be spent on rewriting code or porting it to a different language. For this reason, object oriented languages are popular because new features can be ‘bolted on’ as additional classes. (M Fishpool, 2007, p.156) If this is not a concern, a procedural language can be used instead. Interoperability The presence of several languages may dictate whether a language needs to be interoperable. Interoperability is achieved when programs coded in different languages are able to work with each other through a common set of standards. (Wikipedia 3, 2011) One way this is done is through the Common Language Infrastructure (CLI) specification, which is implemented using Mono and Microsoft’s .NET. These allow any language that meets the CLI specification to be able to be run by their virtual machine. The most common language is C#, which was especially created to be used in .NET, but dialects of popular languages have been created to be used in a similar fashion (examples include C++/CLI and VB.NET). Summery In this report, we discussed what factors are influential in choosing a programming language for a project. We discovered that companies will have organisational policies which restrict employees to only use certain languages or certain company’s’ software. We also learned that all languages have pros and cons, so that understanding what task our program needs to do will ensure we pick the language that is most suitable. We also need to make sure that there are actually people available to employ to code for us, so we should choose a popular language to make it easier to recruit employees. Reliability is also an area of importance, but for programs where reliability must be guaranteed, we learned that there are languages such as Ada which cater to this specific requirement. Budgets are also an issue as development and maintenance costs will differ between languages, and an unreliable solution means more money spent in maintenance costs. If we need our software to be exp anded in the future, it is also best to choose a language that can support this from the start. Finally, we learned about interoperability and how programs coded in different languages are able to work with each other through a common set of standards. Bibliography Anderson, J.K.L.M.P.a.S., 2010. BTEC National Level 3 IT Student Book 1. 1st ed. Edexcel. M Fishpool, B.F., 2007. BTEC Level 3 National in IT. 2nd ed. Hodder Education. Oracle, 2011. Java Runtime Environment (JRE). [Online] Available at: HYPERLINK â€Å"http://java.sun.com/j2se/desktopjava/jre/† http://java.sun.com/j2se/desktopjava/jre/ [Accessed 1 October 2011]. TIOBE, 2011. TIOBE Index. [Online] Available at: HYPERLINK â€Å"http://www.tiobe.com/content/paperinfo/tpci/index.html† http://www.tiobe.com/content/paperinfo/tpci/index.html [Accessed 01 October 2011]. Wikipedia 1, 2011. Software Maintenance. [Online] Available at: HYPERLINK â€Å"http://en.wikipedia.org/wiki/Software_maintenance† http://en.wikipedia.org/wiki/Software_maintenance [Accessed 2 October 2011]. Wikipedia 2, 2011. Strong Typing: Wikipedia. [Online] Available at: HYPERLINK â€Å"http://en.wikipedia.org/wiki/Strongly_typed_programming_language† http://en.wikipedia.org/wiki/Strongly_typed_programming_language [Accessed 14 October 2011]. Wikipedia 3, 2011. Interoperability. [Online] Available at: HYPERLINK â€Å"http://en.wikipedia.org/wiki/Interoperability† l â€Å"Software† http://en.wikipedia.org/wiki/Interoperability#Software [Accessed 27 September 2011].

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.