Note: Sample below may appear distorted but all corresponding word document files contain proper formattingExcerpt from Essay:
High Level Languages in Software Development
A software developer must by the very nature of interaction with a computer, utilize a programming language. The language is simply a means to organize and specify that algorithm functions occur when necessary to achieve a given outcome. There are many versions of languages from both a historical and current context; however, most computer languages can be broadly grouped as either high level or low level. Low level languages are commonly called "machine language" or closely resemble that type of notation in both operation and code used to implement an algorithm. These low-level languages implement the operations used by underlying hardware. High level languages by contrast are used to group and simplify statements and operations of low level languages so that the task of coding by a software developer is simplified.
High level languages allow a problem to be solved through operations by abstracting the underlying operations. The coder can express operations and algorithms as written sentences or specific variable code or in many cases now pictures and symbolic movement of images within a coding environment. The high level languages can then be utilized by the underlying machine by translating the expressions used by the software developer into machine language through a program called a compiler.
Most of the specific operations for a computer are performed at the lowest level with binary digits. Early coding utilized specific inputs with binary digits and faced problems that included high probability of error, long strings for programming, and difficult modification of the code after assembly and implementation. Early jumps in programming beyond simple binary representation included the use of assemblers to translate simple operations so that standard operations including memory addresses and transferring data into specific locations can be performed routinely. The operations could also be standardized so that the programmer could focus on the actual movement of data and operation rather than maintaining a list of locations and correcting those locations as changes were made in the program. Despite the advances made through assemblers and macro assemblers, much of the "work" performed by a software developer in using an assembler concerned with managing, sequencing and specifying locations for operations rather than solving the specific problem that the data and code was intended.
The advantages of high level languages over low level languages are not typically observed at the machine level as the eventual code for each consists primarily of zeroes and ones. The major advantage for the software developer lies in the almost endless capacity for creativity in solving specific problems. Important characteristics include the ability to break up problems into modules, simple expression of symbolic logic functions, meaningful names and notations for components in the program, and most important unlimited capacity for rigorous documentation within the programming at the high level within the language. In addition software developed on high level languages is more portable allowing significant independence in the type of machine where software is used in contrast to low level languages where programs are very machine specific. The advantages of both high level languages and low level languages are shown in Table 1.1 (Watson 1989)
Easy to learn and understand
Access to machine specific operations
Programs can be self documenting
Time and space are efficient in many operations
Rapid solution of problems
Simplified modification and maintenance
Debugging constitutes a significant portion of the time used by a software developer. This difference in debugging between high level languages and low level languages is a critical reason for the wide level of applications possible when using a high level language. Documentation and the use of symbolic, sentence, or even object manipulation in programming allows a developer much simpler review and capacity for spotting errors in the program. Compilers can be used to spot simple errors before a program is implemented allowing checks of operations that would not be detected until specific operations occurred in run time. Some languages even support interactive debugging of specific routines and subroutines during operations so that only segments of the program require repeat compiling. Finally, debugging is vastly improved through the use of documentation within the code used for a high level language.
Choosing and using a high level language depends on many factors but the most obvious choice is the historical precedent for software development within a family of machines or specific types of programs. Applications in most landscapes of software design have extensive libraries of generated code sources that allow implementation of many levels of code sharing and documentation review. Some applications demand a specific type of language simply because of the nature of the operations where coding was developed for that language. The high level language FORTRAN2008 for example has roots in the use of large numerical processes and with object oriented support, floating point operations and support for most electrical engineering processes (IEEE) and is therefore used as the primary language in programming for applications using supercomputers, astronomy, physics and chemistry (Chapman, 2008). The programmer may be a critical aspect in the choice of a language considering familiarity, type of application and the time constraints within the development of the program. Some programmers utilize programs to solve problems in other aspects of life outside of the program while other programmers have a primary interest in programming and computer. Some languages are suitable for one or the other type of programmer. One final aspect of choosing a language is portability where some languages have very narrow limits for application where others allow broad implementation over many platforms.
High Level programming languages are typically divided into four rough groups: imperative languages, functional languages, logic programming languages and the broader classification "other" (Watson 1989). Imperative languages use assignment and variable implementation in the operations and routines performed. Functional languages rely on implementing functions or procedures and implement recursion or repeats of functions to modify data and outcomes. Logic programming is a very high level type of coding where the programmer supplies a problem specification in a formal form. Other represents a spectrum of languages that a programmer can implement over many applications that fall outside of the above groups.
Two dramatically different high level languages with remarkable capability for software developers are C++ (pronounced see plus) and Python. C++ is one of the most widely applied computer languages and has aspects of both high level and low level languages, however for most programmers; the higher functionality of the language is utilized. Python is a strictly high level language with a powerful library of syntax and built in operations for the programmer.
C++ was developed initially to provide large software systems with the capability of managing small control and conciseness through the implementation of a construct called a class (Stroustrup 2000). The use of a class allows data contained within a class to be given a specific list of functions by association so that global assignments of functions can be given to classes of data independent of location and type. C++ allows complex expressions within classes and for all data assigned to that class to be written using conventional algebraic or object oriented form. C++ also allows a programmer to assign new functions to operators a factor that can cause problems between different software developers should code be transferred without proper documentation. The complexity of the language and capability of shelving data within classes as architectures called stacks has promoted use of the programming language in high performance applications such as server architecture, video game design, and entertainment software (Sutter 2004). C++ was designed to provide a programmer with wide latitude of choices in implementing the programming language with the following rules implemented by the creator, Bjarne Stroustrup:
C++ is designed to be a statically typed, general-purpose language that is as efficient…[continue]
"High Level Languages In Software Development" (2012, May 20) Retrieved October 26, 2016, from http://www.paperdue.com/essay/high-level-languages-in-software-development-111504
"High Level Languages In Software Development" 20 May 2012. Web.26 October. 2016. <http://www.paperdue.com/essay/high-level-languages-in-software-development-111504>
"High Level Languages In Software Development", 20 May 2012, Accessed.26 October. 2016, http://www.paperdue.com/essay/high-level-languages-in-software-development-111504
Software Development Life Cycle Agile Software Development Agile software development is a popular software development process or methodology that has gained a lot of popularity in the recent years due to its effectiveness and ease of use. Firstly, it encourages collaboration and teamwork throughout the life cycle of development and this makes it easy to plan and implement. Agile software development is all about breaking a task into small chunks that make it
If the sequence characteristic of the waterfall model implied a difficulty in reverting to phases that had been deemed as completed, with the UML structure, new phases can simply be added into the model and treated in connection to the phases that are actually impacted and to which these new phases relate to. One of the disadvantages of UML is that the entire modeling process is, in fact, just an
These five factors taken together are also what drive the overall development of each successive generation of development as well, as the feedback loops, communication, collaboration and trust are all defined via workflows and available. The real value of the XP software development methodology however is in being able to continually bring new projects onboard between customers and teams who have worked together in the past, picking right up
Software Testing Strategy Computers and their applications have brought about waves of changes in various areas of science and technology. It is also gaining widespread prominence in the field of business and management. So the requirement of a quality oriented technological implementation, having a range of usage is the order of the day. The few gazillion dollars worth software industry is constantly evolving with the needs of people and organizations across
Software Engineering Requirements Are Volatile: Design, Resource Allocation, and Lifecyles Aren't So Flexible For the majority of software development initiatives, bad requirements are a fact of life. Even when there is a high quality elicitation process, requirement change throughout the software lifecycle model. This is expected, if not desired to build a system that the customers wants and will use. But, it's difficult to change design and resource allocation once these have
Allowing for such access necessarily creates a point of weakness, and this must be carefully guarded against through many levels of protection (Stuttard & Pinto 2007). Many of the same steps that are employed in access differentiation as described above can also be employed here -- multiple levels of access that is password protected, strict compartmentalization of data and of processes, and other features such as the recognition and
First, Spanish sounds different from English in terms of vowel sounds, sentence stress, and timing. (Shoebottom, 2007, Spanish). In addition, Spanish speakers can confront grammar problems when learning English, "although Spanish is a much more heavily inflected language than English, there are many aspects of verb grammar that are similar. The major problem for the Spanish learner is that there is no one-to-one correspondence in the use of the