skip to main |
skip to sidebar
In the first lecture, I learnt about the different paradigms of prg. languages. This is not new to us but generally we classify them as low-level, structural and object oriented languages, and what I learnt is a way forward. Have a look at it.
The taxonomy is provided based on the nature of program and data in these paradigms. The taxonomy is based on my instructor, Dr. Mattox A. Beckman's views.1. Low level languagesProgram : series of control signals for a CPU.Data : integers, memory address, IEEE floating point.eg: Assembly languages and microcode2. Imperative languagesProgram : list of commands to be executed.Data : low level types (integers) and composite types (records and arrays)eg: C, BASIC, Fortran, Forth and Pascal.Fortran is still the best language to do intensive mathematic calculations. It has advantages over Matlab.
3. Data encapsulation languagesProgram : list of commands to be executed.Data : low level types (integers), composite types and we can hide details from the user.eg: Clu, Modula 2, Ada4. Object oriented languagesProgram : message between objectsData : object (functions with state)eg: Smalltalk, Java, C++C++ and Java were actually inspired by Smalltalk which should have been the web language, - what Java has become. But they didn't see the opportunity at the right time.
5. Functional languagesProgram : an expression to evaluate.Data : low level types and higher order types (the functions)eg: LISP, Scheme, ML6. Logic programming languagesProgram : a logical predicate to satisfy.Data : set of assertions about what we know to be true.eg: Prolog
So from this taxonomy am already introduced to four of the paradigms. I learnt BASIC during my schooling days and have done few coding in assembly level language during my undergraduate studies. I have also learnt C and C++ in a private course. Then I learnt and worked in Java during my work experience.
Still there are two more paradigms unexplored and I'll learn them in this course (functional and logic programming languages). Hope that should provide me with the well-rounded understanding of the different paradigms, I strive for.
One of my major reasons to opt for graduate studies is to learn the science behind programming languages. This thought blossomed 4 the first time when I was attending a training class in Java in my prev. organization. My tutor was Mr. Sanjay Kumar Mitra, a very nice gentle man with sound knowledge in Java. When he was talking about objects and primitive datatypes like 'int', the similarity in their implementation in Java and the fact that you can't do everything with an 'int' that you do with an object, added more mystery.. I wondered how the designer of the language would have designed it and whatz the science behind it?With my experience as a software engineer, I felt that every software developer should have a good understanding of the different paradigms of progamming languages. Because this is an ever-growing field and it becomes compelling for us to be updated with the technical advancements thoughout our career. The understanding of the paradigms and the root of their conceptualization, is the key to adapt to any new programming language down the line.
Now.. I hope this course 'Programming languages and translators' will address that. In this blog I'll give an introduction abt what I'll learn through this course.
Yep.. so this is what I'll learn from this course.
- The major classes of programming languages.
- How to specify formally the meaning of a language - to people and to the computer. (type derivation etc.,)
- How to design and implement a language?
- Three powerful concepts - Abstraction, Recursion and Transformation.
Yeah! I am going to learn how to design and implement a language.. now doesn't that sound cool?and basically there are three major themes in this course. - How do we describe a language to ourselves?
- How do we describe a language to the computer? - how the computer understands what we typed in? (parsing)
- Once the computer has understood, how it does what we said? (interpreting and compiling)
and I am gonna learn all these through a new language called 'OCaml' - Objective Caml. Itz a functional language .so.. now comes the question, why a functional language? and why not an object oriented programming language which is predominant in the market?Because functional languages are step ahead and have all the features of procedural and OOP languages. So learning through this language, we can conceptualize all other paradigms.
This is my first blog and the purpose is to share whatever I learn in the field of computer science.. or might add even more in the career perspective.Why blogging? It will help me to express myself better and also logging my step-by-step learning curve will help me in the long run to evaluate myself. Apart from that my intention is to share the knowledge I gain and keep this blog as an informative resource to the reader.and with this short note am starting off..