Cover image
Brian T. Liao
Nov 17, 2018 • 4 min read

Programming Languages!


Curry-Howard Isomorphism, the relationship between types and logic, wow.

A lot of times, I find things and want to share with others. Sometimes the audience is not appropriate so here I can share and shout into OBLIVION!


Programming Languages

I was less busy Monday so I decided to read into programming languages. Here is an article that’s pretty good on new languages and concurrency.

If you are started as a programmer, I think Python is the best. JavaScript is major for the web, but these languages are trying to apply new theory and be the future of language design. They try to make it nicer and easier to program.

This is really nice for learning new languages, syntax, and paradigms. If you don’t know a language yet, this might be a bit fast, and would look at more step-by-step tutorials.

First here are three I think are neat.

Kotlin


Kotlin, Java-like improvement by JetBrains.

Kotlin in particular looks really cool. Null safety reducing Java’s NullPointerExceptions? Less boilerplate (though Java Lombok is awesome)?. Val, var, type inference, operator overloading, function extensions, functional programming, and usability with Java make it seem really nice. It really feels like an improvement on Java without being a new language with no maturity.

TypeScript


Types are honestly one of my favorite features.

TypeScript was created by Microsoft for adding types to JavaScript, a dynamic typed language. Types help check and reason your code but can be slower in writing code. Adding types to dynamic languages has become pretty popular with Google doing a similar thing but with special typed comments in JavaScript and Dropbox experimenting with types in Python. In a massive code base, types makes things so much easier to read and reason about.

OCaml and ReasonML


A l g e b r a i c D a t a T y p e s.

OCaml and ReasonML are super neat as well. OCaml is a mature functional programming language that has a strong type system making it easier to catch errors. ReasonML was created by Facebook to turn JavaScript like syntax into OCaml and still be able to transpose it to JavaScript, thus having a nice mature language with familiar syntax. OCaml is used by Jane Street entirely which is impressively and sounds nice with more language safety. ReasonML, I hear is used in Facebook’s Messenger.com and has reduced the number of bugs for them.

Other languages

More languages would be too much time to talk about, but Go, Rust, Clojure, others I forget would be cool to talk about. Concurrency modeling is a new thing that people still try to tack. LLVM makes making programming languages nice too.


Theory/Academics


Different Programming Language Paradigm Chart. SML is an ML language like OCaml.

UW CSE has good programming language resources. Applied undergrad that goes through four paradigms and Graduate Theory that goes more in depth and has proof checking are interesting to read. I’ve skimmed them and totally don’t know a lot but I found it pretty cool reading and skimming these resources. The Curry-Howard Isomorphism equivalence between constructive logic and type theory blew my mind.


Java for Everything

Another idea is one tool for all, embraced by this Java for Everything article. I actually think this is a mature approach to it. Java has gotten a lot nicer and knowing one language and being an expert at it is incredibly useful. I think JavaScript/TypeScript is more the paradigm for the future as you can do client/server/mobile with it.


Conclusion

Thanks for listening! Programming Languages and theory are interesting, but probably aren’t that useful. I think maturity and safety are most useful, and use the right tool for the job. A lot of programming is Google and Documentation, which happens with mature languages. But it useful to know more paradigms and perhaps add those to your style, becoming safer and more effective as a programmer.

Post by: Brian T. Liao