Technical Market Brief
A process that leads from an original formulation of a computing problem to executable computer programs.
Defining Programming Language:
A formal computer language designed to communicate instructions to a machine, particularly a computer. It can be used to create programs to control the behavior of a machine or to express algorithms.
Programming languages are a notation for writing programs, which are specifications of a computation or algorithm.
- Function and Target
- Expressive Power
- Developing understanding
- Generating algorithms
Verification of requirements of algorithms include:
- Resource Comsumption
- Implementaion (coding)
The purpose of programming is to find a sequence of instructions that will automate perfomring a specific task or solve a given problem. The description of programming language is usually split into the two components of syntax (form) and semantics (meaning).
History of Programming Languages
Generations of Programming Languages
First-generation Language - 1GL (Machine Language or Binary Code)
The earliest computers were often programed without the help of a programming language. They were programmed by writing programs in absolute machine language. Machine Language is a set of instructions executed directly by a computers CPU. 1GL code consist of zeros and ones arranged in bytes and words.
Second-generation Language - 2GL (Assembly Languages)
Second-geneation language served to make the program much more human-readable and relieved the programmer of tedious and error-prone address calculations. Assembly language is a low-level language for a computer or other programmable device, in which there is a very strong correspondence between the language and the architecture's machine code instructions. It has a one-to-one correspondnece with binary code, uses abbreviations for the binart code, and is ran through an assembler that produces binary machine code or executables.
Third-generation Language - 3GL (High-level Programming Language)
Third-generation language is the generational way yo categorize high level computer programming langauges. This generation is much more machine independent and more programmer-friendly. Theses are more modern programming languages from ancient ALGOL and FORTRAN, and COBAL through BASIC, C, C++, C#, VisualBasic.net, and Java. When you compile a #GL script, you get a binary, excutable, fole that can be put to the executive of a CPU family and run.
Fourth-generation Language - 4GL
Forth-generation language was envisioned as a refinement of the style of languages classified as 3GL. It was designed to build specific programs and makes many common programming tasks automatic, especially for database and user interface. A powerful 4GL can do most of the routine coding for user interfaces, web-services, and database. It allows deveoplers to focus on business rules and users' needs while the 4GL handles the complexities of the user interface.
This includes support for:
- Database Management
- Report Generation
- Mathematical Optimization
- GUI Development
- Web Development
Fifth-generation Language - 5GL
Fifth-generation is based on solving using constraints given to the program, rather than using an algorithm written by a programmer. It is designed to make the computer solve a give problem with the programmer.
Relevant Programming Languages
C++ - 1980 Bjarne Stroustrup
C++ is a language standardized by the International Orginization for Standardization (ISO), is described by Stroustrup as a “light-weight abstraction programming language [designed] for building and using efficient and elegant abstractions."
It's a general-purpose programming language and its has imperative, object-oriented and generic programming features while also providing facilities for low-level memory manipulation. It was designed with a bias toward systems with performance, efficient and flexibility of use as its design highlights.
C++ is made up of two main components:
- A direct mapping of hardware features provided primarily by the C subset
- A Zero-overheard abstraction based on those mappings
Four Types of Memory Management:
1. Static storage Duration Objects
Created before ‘main()' is entered and destroyed in reverse order of creation after ‘main()’ exits.
- Static inilization is performed
- Dynamic inilazation is performed only after all static inilization is performed
2. Thread Storage Duration Objects
Variables of this type of very similar to static storage duration objects. The main difference is the creation time is just prior to thread creation and destruction is done after the thread has been joined.
3. Automatic Storage Duration Objects
The most common variable types in C++ are local variables inside a function or block, and temporary variables. They have a lifetime that is limited to the scope of the variable. They are created and potentially initialized at the point of declaration and destroyed in the reverse order of creation when the scope is left.
4. Dynamic Storage Duration Objects
These objects have a dynamic lifespan and are created with a call to ‘new’ and destroyed explicitly with a call to ‘delete’
Python - 1991, Guido van Rossum
Python is a widely used high-level programming language for general purpose programming. It is an interpreted language, python has a design philosophy which emphasizes code readability, and a syntax which allows programmers to express concepts in few lines of code that possible in languages such as C++ or Java. It features a dynamic type system and automatic memory management, and supports multiple programming paradigms, including object-oriented, imperative, functional programming, and procedural styles.
Python is a Multi-paradigm programming language:
- Object-oriented Programming
- Structured Programming
Both are fully supported, and many language features support functional programming and aspect-oriented programming.
Python is intended to be highly readable language. It's designed to have an uncluttered. It has fewer syntactic exceptions and special cases than C or Pascal.
VB - 1991, Microsoft
A third-generation event driven programming language and integrated development environment (IDE) from Microsoft for its Component Object Model (COM)
Ruby Visual Studio - 1993, Yukihiro Matsumoto
Ruby Visual Studio is a dynamic, relative, object oriented, general purpose programming language. It is influenced by Perl, Smalltalk, Eiffal, Ada, and Lisp. It supports mulitple programming paradigms, including functional, object-oriented, and imparative. It has a dynamic type system and automatic memory management, and is designed for programmer productivity and fun, following the principles of good user interface design. It follows the principles of least astonishment (POLA): the language should behave in such a way as to minimize confusion for experienced users.
Java - 1995, James Gosling (Oracle)
Java is a general-purpose computer programming language that is concurrent, class-based, object-oriented, and specifically designed to have as few implementation dependencies as possible. It is intened to let the application developers “write once, run anywhere (WORA)” meaning that compiled Java code can be run on all platforms that support Java without the need for are compilation. The programs written for the Java platform must run similarly with any combination of hardware and operation system with adequate runtime support.
Java was originally designed for interactive television, but it was too advanced for the digital cable television industry at the time. It was designed with a C/C++ style syntax that system and application programmers would find familiar and it uses an automatic garbage collector to manage memory in the object lifecycle. Java is a key pillar in Android, an open source mobile operating system.
PHP - 1995, Rasmus Lerdorf (Zend Technologies)
PHP is a server-side scripting language designed primarily for web development but also used as a general-purpose programming language. It was not intended to become a new programming language but it grew organically. It can be used for command-line scripting, and client-side graphical user interface (GUI) applications and it can be deployed on most web servers, many operation systems and platforms, and can be used with many relational database management systems (DBMS).
PHP acts primarily as a filter, taking input from a file or stream containing text and/or PHP instructions and outputting another stream of data. It most commonly the output will be HTML although it could be JSON, XML, or binary data such as image or audio format. It was originally designed to create dynmaic web pages, PHP now focuses mainly on server-side scripting and is similar to other server-side scripting languages that provide dynamic content from a web server to client, such as Microsoft's ASP.NET, Sun Microsystem's, JavaServer Pages, and mod_perl.
C# (C Sharp) - 2000, Microsoft
C# is a multi-paradigm programming language encompassing strong typing, imperative, declarative, functional,generic, object-oriented programming disciplines. It is a general-purpose, object-oriented programming language. The language, and implementation thereof, has the design goals to provide support for software engineering principles such as strong type checking, array bounds checking, detection of attempts to use uninitialized variables. and automatic garbage collection. Software robustness, durability, and programmer productivity are important part of its goal.
Most In-Demand Programming Languages - 2017
- SQL (Structured Query Language) - is a domain-specific language used in programming and designed for managing data held in a relational database management system (RDBMS), or for stream processing in a relational data stream management system (RDSMS).
- Java - is a general-purpose computer programming language that is concurrent, class-based, object-oriented, and specifically designed to have as few implementation dependencies as possible.
- C# (C Sharp) - is a programming language that is designed for building a variety of applications that run on the .NET Framwork.
- C++ - is a general purpose object-oriented programming language, and is an extension of the C language.
- Python - is an interpreted object-oriented programming language similar to PERL, that has gained popularity because of its clear syntax and readability.
- PHP (Hypertext Preprocessor) - is a script language and interpreter that is freely available and used primarily on Linux Web servers.
- Ruby on Rails (RoR) - is an open source framework for Web development in Ruby.
- iOS/Swift - is a general-purpose, multi-paradigm, compiled programming language developed by Apple Inc. for iOS, macOS, watchOS, tvOS, and Linux. It is designed to work with Apple's Cocoa and Cocoa Touch frameworks and the large body extant Objective-C (ObjC) code written for Apple products.