4 ms·
I really like Lisp-based and multi-paradigm languages for teaching because you both want to span as much of CS as possible in a single language, and you eventua
by ChrisRackauckas 9y ago
I really like Lisp-based and multi-paradigm languages for teaching because you both want to span as much of CS as possible in a single language, and you eventually want to implement languages and compilers as part of the curriculum. The former requires multi-paradigm, the latter requires good metaprogramming and homoiconicity. You also want the ability to get low-level to talk about the assembly code (or LLVM IR), function pointers, and handling of memory allocations.
Python is good in the multi-paradigm sense but it abstracts too much away. C++ gets in the way of learning the higher level concepts. Scheme is great for teaching but not really used. I think Julia sits comfy in the middle and can be a great teaching language once its tooling evolves more. It's the only language I know of where some people are writing lazy functional code with metaprogramming, others are writing high-level scripting language vectorized code, while others are writing inline LLVM and controlling stack vs heap allocations, and it all makes sense. I wouldn't use it in a first programmer's course quite yet because the books and tooling need a little bit more, but in a few years I see it as a great option for a university to choose than can span multiple courses, from beginning programming all the way to the algorithms courses and HPC.
- fooker 9y ago>you both want to span as much of CS as possible in a single language Why? Teaching different languages for different kind of requirements make much more sense.
- thomastjeffery 9y agoThat would end up being too much to cover during the course. Time spent getting a class to learn new syntax is unnecessary and takes a long time.
- fooker 9y agoLearning syntax is not really that difficult. On the other hand, a new language (ideally) teaches you a new way to think about problems. If you have a concrete problem to focus on, that part becomes much easier and intuitive.
- thomastjeffery 9y agoNo, it's not. Keeping an entire class on the same page is. Introducing a new side-topic would be detrimental to traditional lecture-based courses. ...not that they are a particularly good method in the first place.
- corysama 9y agoSounds like http://terralang.org http://terralang.org would be your ideal learning language. It starts with Lua(Jit) -which is a very simple, powerful, Schemy language. Lua is used both as a runtime and as a metaprogramming layer for a Lua-ish interface to LLVM IR (including SIMD) that requires static typing and manual memory management. It is intended to be the implementation layer of compilers and JITs and it is created by and for the HPC community. All it really needs is more attention, documentation and tutorials.