Shardul Chiplunkar uses interests in computing and mathematics to better explain and understand complex software systems, and to develop better tools and methodologies for large-scale professional software development, through fundamental research in the theory of programming languages and human-computer interaction.
formally verified?
In high-school maths, we are introduced to the idea of a
proof the word “proof” is etymologically related to the word “probe”. In a proof, we reason from first principles (aka
axioms), why a certain assertion (aka
theorem) holds true. Said differently, we
verify the theorem, and
proof represents the verification process.
The axioms and the proof need a language in which they are represented at a minimum, this language involves a syntax and a set of
proof rules governing that syntax. This mathematical rule-based verification is also called
formal verification, to distinguish it from the colloquial use of the word verification which may just involve human inspection.
Objects are awesome. What if we made a PL where everything was an object?
Lazy evaluation is awesome. What if we made a PL where every data type was lazy?
Extremist programming (no relation to extreme programming) is the act of taking some principle, elevating it above everything else and applying it everywhere. After the dust settles, people often look at this extremism and think, “Well, that was kind of interesting, but using X in Y was clearly inappropriate. You need to use the right tool for the job!”
Here’s the catch: sometimes you
should use the
wrong tool for the job because it might be the right tool, and you just don’t know it yet. If you aren’t trying to use functions everywhere, you might not realize the utility of functions that take functions as arguments [1] or cheap lambdas [2]. If you aren’t trying to use objects everywhere, you might not realize that both integers [3] and the class of an object [4] are also objects. If you aren’t trying to use l