5 ms·
Lua as a teaching language’s got a strength for everyone - if you’re a pragmatic person, Lua offers a fantastic offramp to gamedev; if you’re a theoretically-in
by nxobject 2y ago
Lua as a teaching language’s got a strength for everyone - if you’re a pragmatic person, Lua offers a fantastic offramp to gamedev; if you’re a theoretically-inclined person, Lua’s an elegant language - and it’s wonderful to formative programming experiences with elegant languages. (I started with SICP Scheme.)
- giraffe_lady 2y agoI've taught programming to beginners a fair bit, adults, teens, and children, in several languages, and lua is the worst of them. The initial learning hump in programming is difficult and frustrating and lua does nothing to alleviate that. The main resource learners do have is curiosity, and usually an interest in some goal like making a game or website for a particular purpose. Lua gets them bogged down in writing string manipulation functions that aren't in the standard library or whatever. One of the main things learners want to do is make an http request to an api, you need a library for that. There's no obvious & reliable way to get one, now your beginners are trying to configure luarocks or compile C modules. To be clear lua is fine, great even, it's an incredible technical accomplishment. But the spiritual admiration experienced programmers have for the simplicity of implementation does not matter to a beginner. Its minimal standard lib and flexible distribution methods are a liability to teaching. I've never seen a language more reliably kill that learner's spark that is the best asset of someone new to coding. This is somewhat alleviated if you're using it in a controlled environment for a specific goal, like roblox scripting or love. I've had success with that and would do it again. But as a general introduction to programming it's terrible.
- facvg 2y ago> But as a general introduction to programming it's terrible. It’s just a terrible language. Full stop. Lua is touted by supporters as this orgasmic language. But there’s a reason it’s relegated to the role of scripting language embedded in something else. It’s small, sure, but it *sucks* in literally every way other way from functionality, to tools, to libraries, to community.
- lomase 2y agoRoblox and Pico-8 use LUA.
- aa-jv 2y agoLua is a fine language. You can do wonderful, delightful things with it. I've used it in million-dollar products where other languages cowered in fear at the memory BOM. Lua can go places many other programming lanuages simply cannot, such as in embedded/low resource systems, high performance engines, and even scientific realms. Its not 'just a scripting language', as if that were some sort of valid pejorative. On top of that, its not just a "language" but also can be used to create an extremely powerful engine for any application, systems software, or high-profile component. Its a highly flexible and powerful VM-based language which can be wired into EVERYTHING and ANYTHING a competent programmer might find worthwhile. Lua can do anything and everything, from teaching tools and video games, to network switching equipment to high-precision jet fuel analysis systems. (Disclaimer: I've shipped all of these types of products using Lua.)
- nxobject 2y agoYou're absolutely right re: the lack of batteries and bureaucracy used – I've only taught programming to teens in the context of recreational after-school courses, where kids know about Roblox and Garry's Mod (unfortunately through "skibidi toilet"), already have that context and pre-installed ideas with gaming. For advanced enrichment, I find that kids also love learning graphics techniques like raytracing via LÖVE, 2D shadows via vector operations, physics concepts like springs etc. (with a suitable pixel-graphics harness). Now that you point it out, I'm in agreement with your comment about how Python would be a recipe for counterproductive frustration in many, many other contexts, where people have many other contexts and real-world experiences that motivate coding. I really do respect the challenge of teaching to very different age ranges, and I acknowledge I've only taught in one context! I'm curious – what you do find engages children vs. adults? (I imagine kids might actually love making Discord bots etc.) I'm mulling over a proposal for a community ed. class in my local community college about "programming for accountants" – I've informally heard from some accountant friends that they're really motivated to learn Excel macros for example with very bespoke accounting worklfows – but I'm dreading the thought of VBA.
- giraffe_lady 2y agoI think the most important part at all ages is to connect it to something they actually want to do, and remove as many of the "artificial" barriers to that as possible like tooling configuration, anything beyond rudimentary command line operations, C-style memory allocation and type finessing. It's easier to come back on that stuff once they have some confidence & context for it. With kids you kind of have to tease out their motivations. A lot of them default to "make a game" because it's something they know and it's tangible, but once they start to see the potential they reorient. For example I've had multiple "game dev" classes devolve into "pull live sports scores and text it to me" once they realize how possible that is. I've had discord bots brought up before by multiple kids, so that is a good one too. Generative art is another, or like I've seen really academically-focused kids get excited about just using jupyter to make graphs. The younger they are the bigger the swings between excitement and frustration, and the more your value shifts from technical prowess to emotional nurturer. When I taught adults it was the "fundamentals of programming" module of a web dev bootcamp, the first thing they encountered there. For the most part these were disciplined motivated professionals and the thing they actually wanted to do was learn web development. So it was pretty easy to connect to their goals by just saying like "trust me you need this." I haven't done a specific goal-oriented focused class like that for adults. But I think the main thing is still just keep it pointed towards the target and don't get bogged down in configuration or tooling. The great thing about an environment like roblox or I assume excel is that you have the total runtime & dev env right there without having to deal with external tools.