Skip to main content

3 Dimensions of a Programming Language

- I believe there are 3 broad areas for mastering any programming language :
1. Language Internals
2. Programming Constructs offerred
3. Standard library written already in that particular language.

And these 3 categories are in order of priority to hone mastery in a given programming language. Priorities are always decided based on goals. So, here the premise for setting this priority is having said to have mastered such programming languge we should be able to read a large code corpus with ease and understand what the programmer who originally wrote this code intended to do with it.

Why Language Internals take a first priority ?
- Because we as a software enginners write a tool chain and compilers only to solve existing issues faced in some other programming language. When assembly was just making computer do its job it was difficult for a programmer to express his algorithms in faster way hence came languages like B,C, Fortran and BASIC. After some time into building this things code grew so large such that we needed new way of expressing solutions then came object oriented based languges like c++. When we saw paralled growth in Windows, Linux and MAC operating system we wished for portability along with object oriented programming hence came java and c# offering JVM and CLR abstracing differences seen at OS level.
 - Seeing all these it makes sense to ask first to a programming languge.. Hey What made you to be invented ?
- Jokes apart. When we know programming language internals we can easily reason other programmers choices when we read their code. We can reason why things fail, be cautious when we make design choices.

Why to know about programming contructs offerred by a language, language documentation is readily available ?
- So, why to know many words when dictionary is already available. Ahh ! for the same reason. To be able to communicate fluently in any languge , to be able to put in your true expression in words vocabulary is important. Better vocabulary leads to better language fluency.
- BTW, did you know that there is "else" for a "for loop" in python while same is not offerred by other mainstream languges like java,c++, c#, scala to name a few.


Standard libraries along with a programming languages are huge, Is it a great idea to memories instead of just referring the documentation ?
- This is a last priority. Every thing that is written in standard libraries as  a programmer we can write it from scrach but using them make life easy for us. Hence its good to know them as we strongly belive in DRY principle ( Don't Repeat Yourself ).

- With this principles at helm.. Lets begin our journey of a true programming languge Polygot.
- Programming language template should help further the cause !!

Comments

Popular posts from this blog

Event Sourcing with CQRS.

  The way event sourcing works with CQRS is to have  part of the application that models updates as writes to an event log or Kafka topic . This is paired with an event handler that subscribes to the Kafka topic, transforms the event (as required) and writes the materialized view to a read store.

GraphQL microservices (GQLMS)

I'm curios of GraphQL !     -  GraphQL is an open-source data query and manipulation language for APIs, and a runtime for fulfilling queries with existing data. GraphQL was developed internally by Facebook in 2012 before being publicly released in 2015. It should be solving a problem in querying data !     -GraphQL lets you ask for what you want in a single query, saving bandwidth and reducing waterfall requests. It also enables clients to request their own unique data specifications. A case study ?!    -https://netflixtechblog.com/beyond-rest-1b76f7c20ef6 So, This is just another database technoloy ?  -  No. GraphQL is often confused with being a database technology. This is a misconception, GraphQL is a   query language   for APIs - not databases. In that sense it’s database agnostic and can be used with any kind of database or even no database at all. Source:   howtographql.com