AWS Community Day CPH - Three problems of Terraform
Panini for IT professionals
1. PANINI FOR IT PRO-S
Vasu Srinivasan
Samskrita Bharati
2. Audience
You are a software programmer
You write code in atleast one programming language
You may or may not have written a sort() method, named
after yourself
You know basics of programming concepts and theories
You may or may not be familiar with Samskritam, but
may or may not know at least one Indian language
You are interested in learning Samskritam
but neither found time, resources nor patience
you got bored of watching kolaveri for 87th time and found
time to watch this video
3. About
Software professional, working with computers since 8085
assembler
MS Computer Science, Russia
Twitter/Facebook: vasya10
Blogs:
vagartham.blogspot.com (samskritam)
vasya10.wordpress.com (technical)
Project: http://github.com/vasya10/samskritam-dsl
Samskrita Bharati USA volunteer since 2008
4. What to expect?
First, as a programmer, you should have a broader interest in programming theories,
instead of arguing about better languages or frameworks
Next, this presentation may kindle your latent interest in Samskritam, provide a
different perspective of programming, re-align your interests and/or increase your
scope of understanding languages in general
Above all, it may simply excite you for coming into contact with the thought process of
someone who lived 2500+ years ago.
6. pANini – who, where, what, how?
He is not named after the Italian sandwich
The Italian sandwich is not named after him
Conclusion: He is neither a sandwich nor an
Italian
He fits into what we likely call a “grammarian”
A grammarian is very unlike a librarian
You go to a librarian and ask for a new book
You do not go to a grammarian and ask for a new “word”
7. pANini – who, where, what, how?
lived in gAndhAra (part of bhArata, but today’s Afghanistan)
lived around 500 BC
his other name is dAkShAyaNaH
was killed by a tiger
invented C before Dennis Ritchie did
All of the above are speculations and inferences from other materials rather than his own admission.
Some inferences are less accurate than others.
Some speculations are actually wild unscientific guesses in the name of South East Asian studies, headed by
people who pretend to know Samskritam.
8. pANini – who, where, what, how?
pANini created a work called aShTAdhyAyI (8-Chapters)
This presentations aims to gloss over what he did and how his ideas are
directly and indirectly applicable to modern programming theories
Serious aShTAdhyAyI and related studies could take a lifetime
Sometimes multiple lifetimes depending on your karma.
9. pANini – who, where, what, how?
How did he “write” aShTAdhyAyI ?
Was there a script by his time?
Did people just memorize everything that he wrote?
There is no correct answer to any of the above
We are focusing on what he did, rather than how he did it
10. The Script
Question
Why do you say “pANini” and not “Panini” ?
Answer
And that begins our journey into the fascinating world of
aShTAdhyAyI…
12. The world of phonetics – 1/3
In English, and in many western
languages, the script (roman or latin)
is tied to the language
You can hardly think of English
without the letters A,B,C etc.
English is not a phonetic language.
That is, script vs sound is always a
variant
In other words, the alphabets you
learn to pronounce is not necessarily
what you pronounce to learn the
words
13. The world of phonetics – 2/3
Samskritam, on the other hand, is based on phonemes
Script (lipi) is only a means of expressing the sounds in written form: eg. devanAgarI is very
popular script now
Few hundred years before, the granthA script was popular; in fact a lot of Samskritam works are
found in granthA, telugu, kannada, malayalam, tulu and several North Indian scripts, like shArada
and modi.
There are not enough alphabets in English to phonetically spell Samskritam
So scholars have come up schemes to map English alphabets cleverly to spell Samskritam words
Thus,
a = (short अ); A = (long आ) etc.
N = (ण)
पाणणनि: = pANiniH
14. The world of phonetics – 3/3
In Samskritam, any script is only a visual expression of the “predefined constant sound
form”
In English, the pronunciation has to be memorized for each and every word, for each
and every dialect and sometimes also based on a context
In Samskritam you have to learn only the sound forms
Once you learn a script, you can read any text ... …without any guess work
15. Is Samskritam difficult?
To answer this, we must first agree to define difficult
In terms of learning how to pronounce, majority of the English words are
case-by-case basis
(n-1) words of -tion are pronounced “-shun”.
bastion is not bashun, but bas-t-i-o-n
In Samskritam, you are productive about prounciation and reading from day 1
Not just you, it is easy to teach machines to pronounce words too
16. So, what did pANini do?
Say True or False
discovered and/or invented Samskritam
is the first Samskritam grammarian
is the only grammarian
did not know about Vedas
ashTAdhyAyI is the only book he wrote
divided Samskritam into classical Samskritam and Vedic
Samskritam
All are False
17. what pANini actually did…
described Samskritam as it was spoken in his times
defined rules that allows to generate and validate Samskritam words and
sentences
covers the classic as well as vedic Samskritam
was only a branch in a tree of Samskritam grammar tradition
mentions about 10 predecessor/contemporary grammarians in his work
a huge number of grammarians followed him, specifically classified as
“pANinIyAH” = “belonging to pANini school”
so much, that the elite say “apANinIyam na prayunjyete” (meaning, non-paninian
constructs are prohibhited)
18. Pause and Think moment #2
So Panini did this,
Panini did that,
whatever dude !
OK,
Great!
What was the
problem he was
trying to solve ?
19. The M’ dollar question
450 BCE, Greece
Archimedes, lying in his
bathtub, was pondering the
question
How to find the volume of an
irregularly shaped object?
20. The 10,00,000 dollar question
500 BCE (dates
arbitrary), takshashila
Maharshi pANini, lying in his
kusha grass, was pondering the
question
How to generate an infinite
number of sentences in a language
using a finite set of formal rules?
21. Panini’s work
aShTAdhyAyI (8 chaptered)
unparalleled in terms of covering a grammar of a language comprehensively in so few rules
(just 4000 rules)
left a legacy of grammarians from kAtyAyana (200 BCE) to nAgesha bhatta (1600 CE),
including some of the greatest minds – patanjali, bhartruhari, bhattoji dikshita and more.
academicians, scholars still pondering over understanding pANini’s work in completeness
laid the basics of modern western linguistics (India had a very mature and refined linguistics
field by the time bhartruhari itself ~ 600 CE)
influenced pretty much everything about classical Samskritam, including interpretation of
upanishads, vedas etc by various aachaaryaa-s
so much influence, that we only “hear” about other grammar works, much less studied
23. The Rules
If Panini wrote grammar for English
But
Cut
Gut
Hut
Nut
Rut
Rule: when u is followed by t, pronounce as a
except when preceded by p
Another example: i after e, except after c
Put
What about OUT?
24. The Schemes - Introduction
In order to define a formal language, one has to define the “symbols” of the medium
In math, symbols like ∑,Ω, ∆, ∂, ∏ all mean something
In classical physics Ω means ohm, but in particle physics it is used for Omega baryons
In math, expressions like f(x), y(x), a2 mean something – no comprehendo scheme, no
comprehendo nothing!
𝑥 + 𝑎 𝑛 =
𝑛
𝑘
𝑥 𝑘 𝑎 𝑛−𝑘
𝑛
𝑘=0
25. Panini’s Schemes
A scheme, in Panini’s terms, is a set of algorithms applied to
transform a source entity to a desired target entity
Panini has several innovative schemes to his credit
the first and one of the most strikingly brilliant schemes – is
called mAheshvara sUtrANi
26. Pause and Think moment #3
How did you all
learn A,B,C?
How is A,B,C
arranged?
27. Scheme: mAheshvara sutrANi
IAST Devanāgarī
1. a i u ṇ
2. ṛ ḷ k
3. e o ṅ
4. ai au c
5. ha ya va ra ṭ
6. la ṇ
7. ña ma ṅa ṇa na ṃ
8. jha bha ñ
9. gha ḍha dha ṣ
10. ja ba ga ḍa da ś
11. kha pha cha ṭha tha ca ṭa ta v
12. ka pa y
13. śa ṣa sa ṛ
14. ha ḹ
१. अ इ उ ण् |
२. ऋ ऌ क् |
३. ए ओ ङ् |
४. ऐ औ च् |
५. ह य व र ट् |
६. ल ण् |
७. ञ म ङ ण ि म ् |
८. झ भ ञ् |
९. घ ढ ध ष् |
१०. ज ब ग ड द श ् |
११. ख फ छ ठ थ च ट त व् |
१२. क प य् |
१३. श ष स र् |
१४. ह ल ् |
28. mAhesvara sUtrANi: Non-inclusive upper-bound sets
The last letter of each line is called ‘it’ (इत्)
1. Cannot start a set with an (इत्) letter
2. Start from any letter from any line
3. You can stop only at an (इत्)
4. Skip all intermediate (इत्) letters
5. For the “value-set”, skip that (इत्) letter also
pANini’s 2 in-your-face rules for creating a set:
1. aadirantyena sahetA
2. tasya lopaH
29. Examples of NIUB sets
• अण् = अ इ उ ण्
• अक् = अ इ उ ऋ ऌ क्
• इक् = इ उ ऋ ऌ क्
• अच् = अ इ उ ऋ ऌ ए ओ ऐ औ च्
• हल ् = ह य व र ल ञ म ङ ण ि झ भ घ ढ ध ज ब ग ड द
ख फ छ च ट त क प श स (ह) ल्
• चय् = च ट त क प य्(the first vertical in क ख ग घ
scheme)
• These are called pratyAhAra
30. Scheme: Types of Aphorisms (sUtram)
Six types of sUtram
Definition (samjna)
Interpreting (paribhASha)
Rule (vidhiH)
Restriction (niyama)
Extension (atidesha)
Header (adhikAra)
There are other sub types, but this is the major classification
These 6+ types of sUtram-s cover a majority of the known concepts of
modern programming
31. Programming concepts and sUtram types
Type of sUtra Programming equivalent
Definition Define a function, variable or a value
#define, final static, const
Interpreting Meta rules, Annotations
(@Column, @Id in Hibernate)
DOCTYPE, <META> tags in html, MIME types (pdf, jpg etc.) in
contents
Rules if-then-else condition (or select-case)
If (this condition) then action1 else action2
Restriction Scoping (Restrict or narrow scope of other rules)
Natural numbers start from 1;
Odd numbers are those when divided by 2 yield 1 as remainder
Extension,
Casting
Applying one “concept” to something else
Like Scala traits, “apply a behaviour” to another class
Class casting (Like integer to double, integer to boolean etc.)
Header Constitute a topic
package, namespace
Negation Negation of given general rule in specific circumstances
32. Pause and Think moment #4
• What is a language?
• Set of sentences
• Sentence = Set of words
• Word = Set of letters
• Letter = A form of sound
• Sound = Vibration of air
molecules as perceived by ears
34. Scheme: Application of Affixes
Affixes is an innovative scheme used by pANini (very likely his predecessors
too)
Just like the modifiers in a programming language, but way more functional
and versatile
For eg, you have primitive types like int, double etc. but you modify its
characterstics with const, final, static, transient etc.
Affixes also have a similarity to Hungarian-notation syntax (iIndex, dPrice,
sText, dtToday); Here the prefix indicates the type of variable, while Panini-s
indicators indicate a specific function in a specific context
35. The Affix and the Marker
pANini defines a separate set of “it-s” (markers) for the affixes
scheme
Some examples of affix markers:
any consonant at the end of an affix
ञञ टु डु when in the beginning of an affix
च छ ज झ ञ ट ठ ड ढ ण
the letters ल श क ख ग घ ङ in non derivative compound related affixes
The marker’s functionality is to provide a modification indicator
and then disappear
36. The Panini Affix Markup Language
For IT pro-s, the marker functionality should have rung a striking similarity with
something they work everyday (HTML! and XML!)
In a markup-languge, the tags like body, head, title, etc. tell the browser what to do
with the content, but the tags themselves are not displayed by the browser
Similarly, the affix delivers a certain content enclosed in the “it” tags, indicates what to
do with the content, but those tags don’t serve any purpose thereafter, and disappear
Each affix also acts like a functional programming closure – it provides a specific
function based on the content
37. Examples of Affixes
As stand-alone words, affixes do not make any sense and feel arbitrary
But in Panini’s technical terms they are extremely well defined, purely
technical and fully functional
Each affix can find a parallel to one or more programming principle
Examples: क्त्वा ल्यप् नतङ् सुप् शतृि् शािच् णणच् घञ्
pANini defines over~500 with various functional characterstics
38. Scheme: Functional abstraction of affixes
Let us take some affixes: लुप ् आप ् छाप ् टाप ् डाप ् ल्यप ्
What is common in all of this? प ्
Lets write a simple script to get all the affixes with letter ‘p’
List affixes = [lup, aap, chaap, taap, daap, lyap, dak, tuk, shatrun … ]
p-affixes = affixes.collect { it.contains(‘p’) }
assert p_affixes = [lup, aap, chaap, taap, daap, lyap]
So how does Panini express this?
पित्(pit)
प ् इत् यस्य तत्
similarly ककत् ङङत् णणत् शशत् etc.
40. Scheme: Panini’s rules
For all the sandhi rules, Panini uses a general formula:
z = f(x,[y0 | y1]), where
z = 1st vibhakti
x = 6th vibhakti
y0 = 7th vibhakti
y1 = 3rd vibhakti
When y0 follows, x = z
When y1 follows or precedes, x = z
41. Scheme: Technical Terms
ashTAdhyAyI is full of “technical terms” like the affixes, defintions and rules, which in
normal Samskritam do not mean anything
For eg. the word “guNa” has several meanings in Samskritam: virtue, quality,
character, strings, efficiency, tendency, kind, times
But none of them are used here. In Panini’s world guNa means transformation of a to
a, i to e, u to o, r to ar. That’s it!
So Panini defines a set of technical terms exclusive for his own domain. Those who
know the domain, have the key.
Do you follow where I am getting at?
Panini created a DSL – Domain Specific Language
42. Scheme: Anuvrtti (“Borrow-over”)
• at beach
• people
• while lifeguards watching
• playing while on sand
• volleyball etc. are games
• also bands
• for the kids
• ice-cream etc. from shop
• not babies
• in summer only
Imagine a scenario at a beach:
43. Scheme: Anuvrtti
One word used only once, the following sUtram-s borrow from
the previous sUtram appropriately
Hmm, where have we heard this before?
44. Scheme: Anuvrtti (contd)
DRY !
Don’t Repeat Yourself !
Panini establishes himself as “Reuse Specialist” and “Supreme kanjoos
commander of the universe” !
What is considered a best programming practice in modern days is
implicit in Panini’s work end-to-end.
So much so that, Patanjali – another extra-ordinary genius says
There is not a single extra letter in ashtadhyayI, what to say about a whole sUtram?
45. Scheme: Casting
In OOP you have heard about casting one object to another
Double temperature = 25.20
Integer temp = (Integer) temperature
//now temp behaves like an integer object, not double
By casting, we transposed the properties of one object to another
Panini uses an affix “वत्” to do such transformations
लोटो शलङवत्means all affixes लोट् behave like शलङ् under certain
conditions
46. Summary
Affixes form the central part in Panini’s algorithmic approach to solving his
problems
More than 500 affixes and several of them are a parallel to modern
programming theories and principles
Functions of several affixes or approaches do not even find a parallel in
programming
For eg. the last 3 sections of aShTAdhyAyI contains rules in such a way that
“each rule thinks that it is the last rule”, so once applied, further rules wont
apply.
47. Well, obviously…
So it kinda looks like we are retrofitting modern theories back
into Panini’s approach and claim that all this was already done by
Panini. That does not sound fair!
Yes, we mapped only a few functions.
What if some of the techniques used by Panini could radically
change how we write programs? What if they could deliver
maximum benefit with minimum effort?
48. Research on Panini
Discovery of Panini and his successors’ works by Western academicians has
laid to the fundamentals of modern linguistics (Noam Chomsky etc)
It spawned many modern theories and institutions; In fact there are
proposals that Norman-Backus form must be renamed to Norman-Backus-
Panini form
Just search for Panini in academics or in your local University library, there are
all kinds of theories and thesis on ashTAdhyAyI and similar works
Entire books have been written focusing on just one pratyaya of Panini alone
Research on Panini has been happening ever since he did his work – and it is
still fresh!