First-generation programming language

First-generation programming language

A first-generation programming language is a machine-level programming language.

Originally, no translator was used to compile or assemble the first-generation language. The first-generation programming instructions were entered through the front panel switches of the computer system.

The main benefit of programming in a first-generation programming language is that the code a user writes can run very fast and efficiently, since it is directly executed by the CPU. However, machine language is somewhat more difficult to learn than higher generational programming languages, and it is far more difficult to edit if errors occur. In addition, if instructions need to be added into memory at some location, then all the instructions after the insertion point need to be moved down to make room in memory to accommodate the new instructions. Doing so on a front panel with switches can be very difficult. Furthermore, portability is significantly reduced - in order to transfer code to a different computer it needs to be completely rewritten since the machine language for one computer could be significantly different from another computer. Architectural considerations make portability difficult too. For example, the number of registers on one CPU architecture could differ from those of another.

Current uses

Though 1GL is typically used only with first generation computers, machine level programming still finds a use in several areas of modern programming. All native-code compilers create machine language. This is done without user interaction, usually from a higher-level language such as Fortran, C/C++ or Pascal, often with intermediate byte code or assembly code.

Occasionally, IBM Mainframe software fixes are distributed in the form of ZAPs, which are bare machine code distributed as hexadecimal text. They are applied using a utility program, the latest incarnation is called AMASPZAP though it is still often referred to under its previous name of SUPERZAP. [ [http://publib.boulder.ibm.com/infocenter/zoslnctr/v1r7/index.jsp?topic=/com.ibm.zsysprog.doc/zsysprog_74.html Superzap] ] Thus, the creation of a zap is 1st generation programming.

Another use is for so-called virtual machines. In essence, each virtual machine just creates a translation bridge between machine code and byte code. The byte code is the same across all platforms and the translator module of the virtual machine then translates just-in-time each byte to the corresponding native machine instruction.

Computer viruses often inject code in a certain spot in memory. When tracing the logs of a web server, one may find several entries of very long urls. Often, the encoded part of the url is equal to a certain set of machine level instructions which an attacker hopes will be executed on the server. It is notoriously hard to create such pieces of code, unless the coder makes use of assemble and disassemble helper programs.

From the time that personal computers were introduced and continuing until GUI operating systems replaced DOS operating systems in the early to mid 90s, code-injection was sometimes used to extend programming languages like the C programming language or interpreted BASIC and later interpreted QBasic on the IBM-PC.

Interpreted BASIC had no means of inserting assembly code or to link to libraries made by other languages.

One way of extending interpreted BASIC was by using the BLOAD (Binary Load) instruction. One was able to inject machine instructions in memory and then execute them (by using the CALL ABSOLUTE statement in IBM BASIC). The opposite instruction was BSAVE, with which any part of computer memory could be retrieved. These commands were, however, more commonly used for saving and loading graphics in the BSAVE (graphics image format).

Besides being unportable, like any low-level programming of the day in assembly language, this way of coding needed to be done carefully. If the incorrect instruction was typed by a programmer, there was potential for damaging equipment and data.

References


Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Look at other dictionaries:

  • Fourth-generation programming language — A fourth generation programming language (1970s 1990) (abbreviated 4GL) is a programming language or programming environment designed with a specific purpose in mind, such as the development of commercial business software.[1] In the history of… …   Wikipedia

  • Third-generation programming language — A third generation language (3GL) is a programming language designed to be easier for a human to understand, including things like named variables, abstract data types, and algebraic expression syntax. Another crucial difference compared to… …   Wikipedia

  • Programming language — lists Alphabetical Categorical Chronological Generational A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that… …   Wikipedia

  • Low-level programming language — In computer science, a low level programming language is a language that provides little or no abstraction from a computer s microprocessor. The word low refers to the small or nonexistent amount of abstraction between the language and machine… …   Wikipedia

  • Programming language theory — (commonly known as PLT) is a branch of computer science that deals with the design, implementation, analysis, characterization, and classification of programming languages and programming language features. It is a multi disciplinary field, both… …   Wikipedia

  • Text Executive Programming Language — In 1979, Honeywell Information Systems announced a new programming language for their time sharing service named TEX, an acronym for the Text Executive processor. TEX was a first generation scripting language, developed around the time of AWK and …   Wikipedia

  • Forth (programming language) — infobox programming language name = Forth paradigm = Procedural, stack oriented year = 1970s designer = Charles H. Moore typing = typeless dialects = colorForth, Open Firmware implementations = Forth, Inc., GNU Forth, MPE influenced by =… …   Wikipedia

  • Lisp (programming language) — Infobox programming language name = Lisp paradigm = multi paradigm: functional, procedural, reflective generation = 3GL year = 1958 designer = John McCarthy developer = Steve Russell, Timothy P. Hart, and Mike Levin latest release version =… …   Wikipedia

  • Einstein (programming language) — Introduction Einstein is an open source forth generation programming language (4GL) written on top of the Deesel 3GL programming language. It is a flow based programming language supporting message based constructs such… …   Wikipedia

  • C Sharp (programming language) — The correct title of this article is C# (programming language). The substitution or omission of the # sign is because of technical restrictions. C# Paradigm(s) multi paradigm: structured, imperative …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”