Mark Lewis
2 min readJun 23, 2020

--

Every error that you get in a basic program in a statically typed language is also an error in a dynamically typed language. The only difference is when you find it out and how much the language helps you fix it. Doing sqrt("hi") is a type error whether the language is statically typed or not. The question is whether you find out immediately from the compiler or have to wait until that line of code executes.

The fact that big projects use these languages doesn’t mean they are the ideal way to start off an education. Those things are remarkably unrelated. I will also note that the Kernel for Linux isn’t written in a dynamic language, not that I would really put forward C as the ideal starting language either. Scripting languages are useful for writing scripts. Lots of problems can be solved with scripts. I’m just arguing that because they don’t communicate some concepts well they are limited, and therefore less than ideal, as beginner languages.

Clearly we are just going to disagree on this. I’m fine with that. Honestly, what I would like to see is more research in CS education that compares languages.

I guess I have one other question for you, what experience do you have using languages like Scala that are statically typed, but with type inference? I can understand what you are saying being applied to C++ and Java, but I don’t think it applies as well to languages that have taken lessons from SML and have expressive syntax along with the ability to figure out types in lots of situations.

--

--

Mark Lewis
Mark Lewis

Written by Mark Lewis

Computer Science Professor, Planetary Rings Simulator, Scala Zealot

Responses (1)