Programming Languages Basics

To communicate with a computer, we use computer languages or also known as programming languages. To write a program, we must use the computer languages. A computer language is a set of predefined words that are combined into a program according to predefined rules (syntax). Over the years, computer languages had evolved from machine language to high-level languages.

 

There are generally three types of computer languages. They are: 1. Machine Language, 2. Assembly Language and 3. High-level languages.

 

Machine Language

In the earliest days of computers, the only programming languages available were machine languages. Each computer has its own machine language which is made up of streams of 0’s and 1’s. The only language understood by a computer is the machine language. This language is tightly coupled with the computer hardware. It is difficult to write and maintain code in machine language.

1

Assembly Language

The next evolution in programming came with the idea of replacing binary code for instruction and addresses with symbols or mnemonics. Because they used symbols, these languages were first known as symbolic languages. The set of these mnemonic languages were later referred to as assembly languages. It is easy to write and maintain programs in assembly language than in machine languages.

2

 High-Level Language

Although assembly languages greatly improved programming efficiency, they still required programmers to concentrate on the hardware they were using. Working with symbolic languages was also very tedious, because each machine instruction had to be individually coded. The desire to improve programmer efficiency and to change the focus from the computer to the problem being solved led to the development of high-level languages.

Examples of high-level languages are:

  1. BASIC (Beginners All Purpose Symbolic Instruction Code).
  2. FORTRAN (Formula Translation).
  3. PL/I (Programming Language, Version 1).
  4. ALGOL (Algorithmic Language).
  5. APL (A Programming Language).
  6. COBOL (Common Business Oriented Language).
  7. RPG (Report Program Generator).
  8. LISP (List Processing).
  9. Prolog (Program in Logic).
  10. C++
  11. Java
  12. Visual Basic
  13. C

3

 

Translation

Programs today are normally written in one of the high-level languages. To run the program on a computer, the program needs to be translated into the machine language of the computer on which it will run. The program in a high-level language is called the source program. The translated program in machine language is called the object program. Two methods are used for translation: compilation and interpretation.

Translator

A translator is a program, which converts the code written in one language into another language. The widely used translators are compilers and interpreters.

Compiler

A compiler is a translator which converts the program written in high-level language into assembly code or into another form of intermediate code or directly into machine code. A compiler converts the whole source code at once into object code and then executes it. So, compiler is faster than a interpreter.

Interpreter

An interpreter is a translator which converts the source program into object or machine code. The interpreter converts the source code line-by-line and executes it immediately, which results in less performance. Thus, an interpreter is slower than a compiler.

 

Generations of Programming Languages

There are five generations of programming languages. There are classified based on how close the programming language is to human beings.

First Generations Languages (1GL): The first generation language is the machine language. It consists of only 0’s and 1’s. It is very difficult write programs in machine language.

Second Generation Languages (2GL): The second generation language is the assembly language. Assembly language consists of symbols known as mnemonics, English words rather than 0’s and 1’s. Programs written in assembly language are converted to machine language using a translator known as assembler.

Third Generation Languages (3GL): The third generation languages are high-level languages which are similar to English. It is easy to write programs using high-level languages. Programs written in high-level language are converted to machine language by using a translator like compiler or interpreter. Third generation languages are problem oriented languages. Examples: C, FORTRAN, COBOL, PASCAL etc.

Fourth Generation Languages (4GL): The fourth generation languages are non-procedural languages. Programmers have to specify only what to do but not how to do it. These languages are developed for users having minimum programming language. Examples: SQL, ABAP etc.

Fifth Generation Languages (5GL): The fifth generation languages are declarative languages which are used in artificial intelligence and expert systems. Example: Prolog etc.

 

Different type of Cloud Services

Cloud platform is seeing rapid growth past few years and for many it is still very confusing with each service provider touting technical terms. Below are the few basic cloud services offered by various companies like  Google, Amazon, Microsoft and Salesforce. For a non IT person, below is perfect explanation in simplest terms.

 

Difference between different cloud services - Coding Security

 

SaaS Services

  • Email and Office Productivity: Applications for email, word processing, spreadsheets, presentations, etc.
  • Billing: Application services to manage customer billing based on usage and subscriptions to products and services.
  • Customer Relationship Management (CRM): CRM applications that range from call center applications to sales force automation.
  • Collaboration: Tools that allow users to collaborate in workgroups, within enterprises, and across enterprises.
  • Content Management: Services for managing the production of and access to content for web-based applications.
  • Document Management: Applications for managing documents, enforcing document production workflows, and providing workspaces for groups or enterprises to find and access documents.
  • Financials: Applications for managing financial processes ranging from expense processing and invoicing to tax management.
  • Human Resources: Software for managing human resources functions within companies.
  • Sales: Applications that are specifically designed for sales functions such as pricing, commission tracking, etc.
  • Social Networks: Social software that establishes and maintains a connection among users that are tied in one or more specific types of interdependency.
  • Enterprise Resource Planning (ERP): Integrated computer-based system used to manage internal and external resources, including tangible assets, financial resources, materials, and human resources.

 

PaaS Services

  • Business Intelligence: Platforms for the creation of applications such as dashboards, reporting systems, and data analysis.
  • Database: Services offering scalable relational database solutions or scalable non-SQL datastores.
  • Development and Testing: Platforms for the development and testing cycles of application development, which expand and contract as needed.
  • Integration: Development platforms for building integration applications in the cloud and within the enterprise.
  • Application Deployment: Platforms suited for general purpose application development. These services provide databases, web application runtime environments, etc.

 

IaaS Services

  • Backup and Recovery: Services for backup and recovery of file systems and raw data stores on servers and desktop systems.
  • Compute: Server resources for running cloud-based systems that can be dynamically provisioned and configured as needed.
  • Content Delivery Networks (CDNs): CDNs store content and files to improve the performance and cost of delivering content for web-based systems.
  • Services Management: Services that manage cloud infrastructure platforms. These tools often provide features that cloud providers do not provide or specialize in managing certain application technologies.
  • Storage: Massively scalable storage capacity that can be used for applications, backups, archival, and file storage.

Compare programming languages features side-by-side

Programming Languages commonly used features in a side-by-side format – HyperPolygot. Compare, refer and learn easily.

 

 

Pass the information on. Share this post and let your friends know too.  Thanks.

Who am I?   |   Contact me   |   Shop

 

Free e-books for developers

E-books written by experienced developers and is available free. Site has vast categories with many books on popular as well as new technologies. Check it out – DevFreeBooks.

 

Another similar website is – DZone. It has reference books as well as guides.

 

Comments and suggestions are always welcome. Pass the information on. Share this post and let your friends know too.  Thanks.

 

Who am I?   |   Contact me   |   Shop

Syntax reference for programming languages

Found another great website that allows reference as well as searching for syntax for different programming languages along with integration with DuckDuckGo, Slack and Visual Studio Code as well as API’s. Check it out –The programming syntax database: SyntaxDB.

 

Comments and suggestions are always welcome. Pass the information on. Share this post and let your friends know too.  Thanks.

 

 

Who am I?   |   Contact me   |   Shop

View popular Java projects online

Found a great website – GrepCode for searching and viewing source code for popular Java projects online. It also has plugins for Eclipse and InteliJ IDE. It also supports searching by stack trace. Check it out.

 

Comments and suggestions are welcome. Pass the information on. Share this post and let your friends know too.  Thanks.

 

Who am I?   |   Contact me   |   Shop

 

 

Building Apps JSON style

Prologue:

Developing apps for mobile devices requires considering the constraints and features of these devices. Mobile devices run on battery and have less powerful processors than personal computers and also have more features such as location detection and cameras. Developers also have to consider a wide array of screen sizes, hardware specifications and configurations because of intense competition in mobile software and changes within each of the platforms. Then there is challenge to make app as interactive and user friendly as possible. Mobile content management is also another major key area.

Recently, I started an Android project on an idea I got. It was supposed to be an simple app for my parents and own personal use. Due to limited time I had, was looking for an framework or system which would make app development less complicated. I didn’t had anything particular in mind but wanted a system that can abstract many complicated things in underlying layer(Android in my case) and let me work on just the important core stuff.

Sometime back, while surfing on Github explore projects section, I came across this project. It was exactly what I was looking for. Jasonette, as it is called, takes a JSON file from any server pointed to, parses it and delivers a app on the fly. This JSON contains all the required properties such as layout details, data to be populated and external event management. True to what their project states “One JSON to rule them all.

2017-04-27 13_20_58-Jasonette - Native App over HTTP

I downloaded their project and tested a quick sample. It worked!!! The project is actively supported on GitHub and new features are being added even as I write this. As an programmer will know, it has bugs and some features missing. But one big advantage is that it is open source. It can be extended as per requirement or users can contribute directly into its development.

Their official website has extensive documentation on usage and even have samples. Some users have apps live on Google Play developed on using this framework. For me, it makes sense as I need to update s single JSON file each time I wanted some minor changes instead of going and making code changes and re-generating apk file. Of-course, this will won’t work much in case of big complicated and large scaled apps but small, simpler ones will fit perfectly.

Give it a try if you are into app development. It is even more interesting for it’s working perspective if you wanna dig deeper into it’s architecture and functionality.

The whole project is hosted on GitHub. Get Jasonette for Android from here and for iOS from here.

Comments and suggestions are always welcome. Pass the information on. Share this post and let your friends know too.  Thanks.

Who am I?   |   Contact me   |   Shop