Programming - A complicated world with a simple understanding!
Before sharing about my opinion, thanks for the overwhelming responses and the feedback you people gave either in the comment session or through message! happy to receive so many comments and i am happy to correct it! Thanks is the little word I can say and I assure you to fulfill the gaps to your expectations! Started with LOVE post and in the reverse you people too showed me more LOVE. Nandrigal once again. I keep posting something useful for all, and together we learn and gain some wisdom through it.
Before starting let me see some conversation happened between professor and student,
Prof: WHAT IS PROGRAMMING? Student: I DON’T KNOW PROGRAMMING! Prof: WHY? Student: BECAUSE I HATE PROGRAMMING! Prof: WHY? Student: I DON’T YAR ITS IN OUR SYLLABUS! EVEN I DON’T KNOW WHY THEY INCLUDED & HOW IT WILL BE USEFUL TOO? Then how come I can get the meaning?
A bit sarcastic conversation right?! This is the statement we will hear from most of the engineering students, worst scenario is even from the core department domains like Computer Science Engineering (CSE) and from Information Technology (IT). Oh! Really! What about the other departments like Electronics and Communication Engineering (ECE), Electrical and Electronics Engineering (EEE), Mechanical Engineering (Mech), Biomedical Engineering (BME) and many others. are they aware about it.? Simple answer is again NOOOOO!! Why? (Even myself too!) Again if you force them, the answer will be I hate programming! (In reality most of them we dont the know the purpose of learning, there comes the problem, that's another sad thing in engineering)
Is that “PROGRAMMING” word is copyrighted to only CSE and IT people alone, the answer is again a big NO!, each department has their own language. To be more layman terms it’s like in Tamil Nadu state we speak Tamil (majority I am saying), in Karnataka they speak Kannada, Malayalam for Kerala, consider each state as one department they have their own predominant language as programming language.
Understanding about Programming
Programming requires a greater idea to be taken and broken into individual instructions. We write these instructions in programming languages by writing statements. Ok let me put it in this way like for a work to be done, we use a communication tool to get it done like an architect needs to finish some construction through some north Indian people, he needs some translator who knows Tamil as well as Hindi to translate the work process to the workers (assuming it's happening in Tamilnadu, literally in cities), he simply can’t say the full work process for whole construction at the same time, he needs to convey step by step how to do and what to do? Right! So from this layman example we conclude construction is the ultimate idea (TASK), each time he will give direction (INSTRUCTIONS) to the translator to convey the workers what to do? (STATEMENTS). I hope somehow i get some meaning about programming! Well,
It’s the ability to take an idea, break it apart to individual pieces and write the statements in proper order, using proper syntax, so that it can be fed to a machine to get the desired results.
Importance of Programming
So why we need to do programming in general? Is that essential?! Yes! Programming is an important in our daily life scenario. Wait! What? Daily scenario?! Are you kidding, ok how? Simple concept – without smartphone is there anyone nowadays (don’t show statistics like in Mudhalvan movie - some category people still don’t have cell phones, and their minimum wages is something around Rs:XX and all). Nope! That’s one of the simplest (by concept explanation but it’s one of the complex system – functionally) system we can discuss. So wait what is system? You said it's smartphone right! Well, a system which is a combination of SOFTWARE and HARDWARE. Consider a system will be like below (just for explanation, sorry for the bad diagram!) Smart phone which runs on hardware component and controlled by software programming.
Central Processing Unit (CPU), which act as brain of the system, the main purpose of it is to ask the process for the next step with instruction set and memory (for data purpose) combination.
Programming - Explanation!
Here comes the concept of programming somewhat deeper. So above in topic we mentioned software right, in that part it's full of programming concept only, there we write many codes and instructions to do some tasks: in another way programming controls all the hardware (sensors and electronic components – that’s not in the discussion part so don’t worry about it) that we are using in the phone, to work properly. For example if we press an any APP lets consider CAMERA (default), click option is the known to all, but other than that we have flashlight option, HDR option, beautify option and many each has some specific functions if we press that, the response will be different, why? Because it was programmed or coded like that to do that specific task.
I hope from above video you get clear picture about the importance of programming. Each key when you are pressing has some changes that was programmed inbuilt. Still confused let us consider an app “PHOTO LAB PICTURE EDITOR: face effects, art frames” (I preferred this because recently in WhatsApp status I am seeing many modified version of photos through this app – Yellow / Brown combination with our photo in some kind of artwork) here in this app we will be having so many templates to modify our normal photos taken in camera, so each template has some different coding or steps to be followed to achieve the final version / task to be done. I hope now it’s cleared.
Usage of Programming!
Likewise for each system like TV, fridge, washing machine, android based device, apple device and in academic simulation, base level academic labs, we will be using different programming language like java, python etc.; for better understanding - irrespective of our mother tongue, when comes to placement time we use English language as medium, for higher studies if we prefer to do in German countries one of the basic qualification is German language certification, some companies like Robert Bosch they will send their company employees once in a year to Germany, so by default in company itself they provide learning facility. So programming language differs upon the application and environment. So we need to understand the system and its application better, before using any languages.
Unfortunately machines cannot understand our native language. So irrespective of languages that we are using, at that last when it comes to machine end, It is only familiar with binary language or machine code (series of 0’s and 1’s).
Do machine speak through programming languages?
So ok now I understand what is programming? And purpose of using different programming language and what actually they do too? Ok fine! Now what? Another doubt?! Do the machines talk to machines by this programming language? YES!!!! What? Do they talk like us? YES!!! They will talk. Can you show then how? Yup! I got you the proof too,
This is my first language (understanding level of coding) python language. So through anaconda prompt window (means? - that’s not the issue now) for python, when we type some commands (Instruction), it will show output with respect to it and after that it will wait for the next command (like what next?). Here is how? In the above diagram after each line there is symbol called “>>>”, which means what’s the next command? I am waiting! Kind of scenario. So programming language is used to interact with the system, for specific application alone.
To effectively communicate, we must realize that we are all different in the way we perceive the world and use this understanding as a guide to our communication with others.
So the overall verdict of my above discussion is Communication is an integral part of our human life (applicable to all living things), without any proper communication we cannot convey anything and perform some task also, likewise machine too have communication they use some different programming language depend on the some constraints and environment.
I think for any relationship to be successful, there needs to be loving communication, appreciation, and understanding.
In general, the history about the programming language is based on the generations, so let us see from the scratch, how the programming gets some structure
Imagine language as the native tongue of the computer, the language closest to the hardware itself. Each unique computer has a unique machine language. A machine language program is made up of a series of binary patterns (e.g., 01011100) which represents simple operations that can be accomplished by the computer (e.g., add two operands, move data to a memory location). Machine language programs are executable, meaning that they can be run directly. Programming in machine language requires memorization of the binary codes and can be difficult for the human programmer.
Assembly language is the first textual programming, which turns machine instructions into a representable form. Each line tended to match directly to an instruction that became a sequence of 1's and 0's. They represent an effort to make programming easier for human beings. The machine language instructions are replaced with simple pneumonic abbreviations (e.g., ADD, MOV). Thus assembly languages are unique to a specific computer (machine). Prior to execution, an assembly language program requires translation to machine language. This translation is accomplished by a computer program known as an Assembler. Assembler are written for each unique machine language.
High-level languages, like C, C++, JAVA etc., are more English-like and, therefore, make it easier for programmers to “think” in the programming language. High-level languages also require translation to machine language before execution. This translation is accomplished by either a compiler or an interpreter. Compilers translate the entire source code program before execution.(Eg: C++, JAVA). Interpreters translates code programs one line at a time.(Eg: Python) Interpreters are more interactive than compilers.
These languages are less about executing instructions, and more about expressing demands / requirements for a domain problem. The interesting thing is that, even though they are less about executing instructions they still end up as instructions that execute somewhere. Examples would include designing queries in SQL, and developing UI in XAML, and quantum computer programming languages.
Often what you find is that generation 4 gets closer to being something more mathematical in nature, which is what SQL is. You could almost start to claim that, if you don’t have to pay attention to how something is stored in memory, then you are at generation 4. However, all production-grade applications will force you to consider things like this, whereas the compiler cannot optimize it for you.
This is still new, and it really boils down to anything that attempts to take the programmer out of the picture. I’m kidding, because However, the goal of generation 5 languages, is to incorporate artificial intelligence alongside human intelligence to perform problem solving.
Some important key aspects about programming, why programming is so important?!
Programming skill can lead to a software development jobs
Programming is the fundamental skills for jobs such as software development. There is currently a shortage of software developers worldwide, so learning to code can be easy route into an open field of work. However, this isn’t the only way coding can open up job opportunities.
Programming open up other job opportunities
For smaller start-ups, hiring someone solely to take care of coding and web design may not be the most economically viable choice. Having coding as a string to your bow can be key to finding jobs related to field.
Programming literacy can help you understand other aspects of technology
Knowledge for coding (or, as some call it, coding literacy) can help in other ways, too. It can mean you quicker to learn other aspects of tech, plus mean you are more digitally fluent. In today’s ever more digital job market, this can only be of benefit. It could lead to freelance work.
Programming develops structured and creative thinking
When programmers are given a problem to solve, they don’t just start to code right away. Problems are not solved that way. When you see a problem you need to break it down into workable pieces and then get on it. You gradually program your brain to break every problem down to bits and understand better. You start thinking logically, and this gives rise to more creative solutions you’ve ever given.
Here are some of the site you can visit this for better understanding about programming,
https://openclassrooms.com/en/courses and many more are there....
As different needs have arisen and new devices have been created, many more languages have followed, (don't get tired, reason to point out all programming languages are to understand the importance and usage and the purpose behind the discovery alone, just feel free to explore the uniqueness behind each language, it will be interesting)
1949: Assembly Language: First widely used in the Electronic Delay Storage Automatic Calculator, assembly language is a type of low-level computer programming language that simplifies the language of machine code, the specific instructions needed to tell the computer what to do.
1952: Autocode: Autocode was a generic term for a family of early computer programming languages. The first was developed by Alick Glennie for the Mark 1 computer at the University of Manchester in the U.K. Some consider autocode to be the first compiled computer programming language, meaning that it can be translated directly into machine code using a program called a compiler.
1957: Fortran: A computer programming language created by John Backus for complicated scientific, mathematical, and statistical work, Fortran stands for Formula Translation. It is the one of the oldest computer programming languages still used today.
1958: Algol: Created by a committee for scientific use, Algol stands for Algorithmic Language. Algol served as a starting point in the development of languages such as Pascal, C, C++, and Java.
1959: COBOL: Created by Dr. Grace Murray Hopper as a computer programming language that could run on all brands and types of computers, COBOL stands for COmmon Business Oriented Language. It is used in ATMs, credit card processing, telephone systems, hospital and government computers, automotive systems, and traffic signals. In the movie The Terminator, pieces of COBOL source code were used in the Terminator’s vision display.
1959: LISP: Created by John McCarthy of MIT, LISP is still in use. It stands for LISt Processing language. It was originally created for artificial intelligence research but today can be used in situations where Ruby or Python are used.
1964: BASIC: Developed by John G. Kemeny and Thomas E. Kurtz at Dartmouth College so that students who did not have a strong technical or mathematical understanding could still use computers, it stands for Beginner’s All-purpose Symbolic Instruction Code. A modified version of BASIC was written by Bill Gates and Paul Allen. This was to become the first Microsoft product.
1970: Pascal: Developed by Niklaus Wirth, Pascal was named in honor of the French mathematician, physicist, and philosopher Blaise Pascal. It is easy to learn and was originally created as a tool for teaching computer programming. Pascal was the main language used for software development in Apple’s early years.
1972: Smalltalk: Developed by Alan Kay, Adele Goldberg, and Dan Ingalls at Xerox Palo Alto Research Center, Smalltalk allowed computer programmers to modify code on the fly and also introduced other aspects now present in common computer programming languages including Python, Java, and Ruby.
1972: SQL: SQL was developed by Donald D. Chamberlin and Raymond F. Boyce at IBM. SQL stands for Structured Query Language. It is used for viewing and changing information that is stored in databases. SQL uses command sentences called queries to add, remove, or view data.
1978: MATLAB: Developed by Cleve Moler. MATLAB stands for Matrix Laboratory. It is one of the best computer programming languages for writing mathematical programs and is mainly used in mathematics, research, and education. It can also be used to create two- and three-dimensional graphics.
1983: Objective-C: Created by Brad Cox and Tom Love, Objective-C is the main computer programming language used when writing software for macOS and iOS, Apple’s operating systems.
1983: C++: C++ is an extension of the C language and was developed by Bjarne Stroustrup. It is one of the most widely used languages in the world. C++ is used in game engines and high-performance software like Adobe Photoshop. Most packaged software is still written in C++.
1987: Perl: Perl was originally developed by Larry Wall in 1987 as a scripting language designed for text editing. Its purpose was to make report processing easier. It is now widely used for many purposes, including Linux system administration, Web development, and network programming.
1990: Haskell: Named after Haskell Brooks Curry, an American logician and mathematician. Haskell is called a purely functional computer programming language, which basically means that it is mostly mathematical. It is used by many industries, especially those that deal with complicated calculations, records, and number-crunching.
1991: Python: Designed by Guido Van Rossum, Python is easier to read and requires fewer lines of code than many other computer programming languages. It was named after the British comedy group Monty Python. Popular sites like Instagram use frameworks that are written in Python.
1991: Visual Basic: Developed by Microsoft, Visual Basic allows programmers to choose and change pre-selected chunks of code in a drag-and-drop fashion through a graphical user interface (GUI).
1993: R: Developed by Ross Ihaka and Robert Gentleman at the University of Auckland, New Zealand, R is named after the first names of the first two authors. It is mostly used by statisticians and those performing different types of data analysis.
1995: Java: Originally called Oak, Java was developed by Sun Microsystems. It was intended for cable boxes and hand-held devices but was later enhanced so it could be used to deliver information on the World Wide Web. Java is everywhere, from computers to smartphones to parking meters. Three billion devices run Java!
1995: PHP: Created by Rasmus Lerdorf, PHP is used mostly for Web development and is usually run on Web servers. It originally stood for Personal Home Page, as it was used by Lerdorf to manage his own online information. PHP is now widely used to build websites and blogs. WordPress, a popular website creation tool, is written using PHP.
1995: Ruby: Ruby was created by Yukihiro “Matz” Matsumoto, who combined parts of his favorite languages to form a new general-purpose computer programming language that can perform many programming tasks. It is popular in Web application development. Ruby code executes more slowly, but it allows for computer programmers to quickly put together and run a program.
2000: C#: Developed by Microsoft with the goal of combining the computing ability of C++ with the simplicity of Visual Basic, C# is based on C++ and is similar to Java in many aspects. It is used in almost all Microsoft products and is primarily used for developing desktop applications.
2003: Scala: Created by Martin Odersky. Scala is a computer programming language that combines functional programming, which is mathematical, with object-oriented programming, which is organized around data that controls access to code. Its compatibility with Java makes it helpful in Android development.
2003: Groovy: Developed by James Strachan and Bob McWhirter, Groovy is derived from Java and improves the productivity of developers because it is easy to learn and concise.
2009: Go: Go was developed by Google to address problems that can occur in large software systems. Since computer and technology use is much different today than it was when languages such as C++, Java, and Python were introduced and put to use, problems arose when huge computer systems became common. Go was intended to improve the working environment for programmers so they could write, read, and maintain large software systems more efficiently.
2014: Swift: Developed by Apple as a replacement for C, C++, and Objective-C, Swift is supposed to be easier to use and allows less room for mistakes. It is versatile and can be used for desktop and mobile apps and cloud services.
From the above informations, it is clear that, depend upon the application and needy many programming languages came into picture, added it's not only copyrighted to pure IT domain, programming language is application specific
I hope the meaning of programming and its importance are justified. So my kind request is before learning any programming language, just analyze the necessity and the demand for the language, if you understand it clearly, then learning is not the big deal. Please feel free to ask the questions related to it, will try to answer it.. or if my opinion is not correct or need some modifications too feel free to correct me, life is to learn and i am always ready to correct my mistakes.