8 ms·
Hedy: Textual programming made easy
- ragebol 2y agoHedy is great for learning programming to kids. I tried this a while ago with my scout group, I expected them to take a while per lesson, but they flew through the lessons in no time, drawing all sorts of patterns and making little games
- sitkack 2y agoThat is one of the coolest results from Hedy, that these engaging learning paths have a constant acceleration to them, so before you know it, you are juggling while riding a unicycle. You undertand something to the core when you have built it yourself. In a way it is a perfect (ugh) example of constructivist learning theory, Hedy itself is a constructivist learning exercise in how to teach. Lego Mindstorms were inspired by Seymour Papert, himself the creator of the Logo programming language and whom he took inspiration from Piaget the psychologist whose work on feedback loops creating core knowledge. This is an example of how to search using phind https://www.phind.com/search?cache=pti09n13qtsxahmn5zra8yjk https://www.phind.com/search?cache=pti09n13qtsxahmn5zra8yjk
- deleted 2y ago[deleted]
- dang 2y agoRelated. Others? Hedy: Textual Programming for the Classroom - https://news.ycombinator.com/item?id=40095336 https://news.ycombinator.com/item?id=40095336 - April 2024 (1 comment) Hedy: Textual Programming for the Classroom - https://news.ycombinator.com/item?id=39713141 https://news.ycombinator.com/item?id=39713141 - March 2024 (1 comment) Hedy – a programming language created by a CS teacher to teach kids coding - https://news.ycombinator.com/item?id=38509871 https://news.ycombinator.com/item?id=38509871 - Dec 2023 (1 comment) Hedy: Textual Programming for the Classroom - https://news.ycombinator.com/item?id=34274831 https://news.ycombinator.com/item?id=34274831 - Jan 2023 (1 comment) Hedy: A Gradual Programming Language - https://news.ycombinator.com/item?id=33252427 https://news.ycombinator.com/item?id=33252427 - Oct 2022 (1 comment) Hedy: A gradual programming language for education - https://news.ycombinator.com/item?id=30850420 https://news.ycombinator.com/item?id=30850420 - March 2022 (1 comment) Hedy is a gradual programming language that helps kids to learn Python - https://news.ycombinator.com/item?id=26944418 https://news.ycombinator.com/item?id=26944418 - April 2021 (48 comments) Hedy – A Gradual Programming Language - https://news.ycombinator.com/item?id=26761487 https://news.ycombinator.com/item?id=26761487 - April 2021 (1 comment) Hedy: A Gradual Language for Programming Education - https://news.ycombinator.com/item?id=25249471 https://news.ycombinator.com/item?id=25249471 - Nov 2020 (17 comments)
- raimondious 2y agoNo comments but From Burnout to Breakthrough is a conversation with the creator of Hedy https://news.ycombinator.com/item?id=40582437 https://news.ycombinator.com/item?id=40582437
- JTyQZSnP3cQGa8B 2y agoIt seems good for beginners. Less scary than BASIC, simpler than Python, and they even have a turtle mode. I don’t know who the audience is but I would have enjoyed that as a kid.
- deleted 2y ago[deleted]
- sitkack 2y agoI saw Felienne Hermans give a talk on Hedy at Splash! but that wasn't recorded sadly, but here is a presentation too a much larger audience https://www.youtube.com/watch?v=j4eSjA6btE8 https://www.youtube.com/watch?v=j4eSjA6btE8 that I hope covers the same material. It is a wonderfully amazing project. I don't know if the video goes into it yet, but when you see how truly egalitarian the project is, you are both proud and ashamed of humanity. Proud that Felienne made this project and all the lives she is improving, but ashmed that it took us this long. Lets make up for it by making everything we design with the same affordances. Lets democratize access to the future. You might recognize Felienne from her research on Spreadsheets which I feel was a thing here around 2010 https://www.youtube.com/watch?v=0CKru5d4GPk https://www.youtube.com/watch?v=0CKru5d4GPk It feels like that was the start of resurgence in respect for Spreadsheets.
- zfnmxt 2y agoAren't all the SIGPLAN conferences recorded now? At any rate, her talks were recorded: https://www.youtube.com/watch?v=IrUh5AgIYKE https://www.youtube.com/watch?v=IrUh5AgIYKE https://youtu.be/-Br66SUjsdQ?t=12103 https://youtu.be/-Br66SUjsdQ?t=12103 (I was also at SPLASH24 and thought she gave great talks. :) )
- hitekker 2y agoI wonder how much projects like Hedy appeals to adults over kids. Egalitarian, multilingual coding sells well to parents. Children, so I hear, just want to make Minecraft mods or Roblox games. Seems like a tension between the customer and the user.
- sitkack 2y agoIn the video I saw, and of course it is by the Hedy team, about Hedy, but it showed kids very much being excited that the keywords were in their language. There are a lot of kids in the world and meeting them where they are is important.
- voidUpdate 2y agoI really like that it can be used in different languages. Does the whole file have to be in one language, or can you change whenever? Can you have some lines of arabic inside an english file?
- sitkack 2y agoYou can select the language drop down and follow one of the tutorials https://www.hedy.org/hedy#story https://www.hedy.org/hedy#story https://www.hedy.org/hedy/10?language=ar&keyword_language=ar#parsons https://www.hedy.org/hedy/10?language=ar&keyword_language=ar... At the top left is a control panel that toggles base language for the language keywords. Or what it appears to me. Is that what you are looking for? You could try the exercise and see if it supports both. It looks like you can definitely program entirely in Arabic with English inside of Hedy, I am not sure if any of the exercises are declaring new keywords
- voidUpdate 2y agoAh, thank you, that answers my questions =) Looks good!
- thrance 2y agoDang it, I had this idea in my head forever, good to see someone else do it. I also thought about being able to disable features of the language, like classes, so teachers can focus on specific concepts in specific lessons.
- sitkack 2y agoYeah, I have been playing with composable grammars, so you could only include parts of the language that you want for that specific case. Your take might be different, you probably have something to add to the https://www.hedy.org/ https://www.hedy.org/ project. We really gotta get all the good ideas in our head out into the world. What other ideas do you have?
- Piraty 2y agohttps://corecursive.com/hedy-with-felienne-hermans/ https://corecursive.com/hedy-with-felienne-hermans/
- keyle 2y agoI grew up French. Never had any issue remembering English keywords. It's not like "for" really flows naturally as an indication of a looping construct. Edit: I sounded overall negative about this, but I didn't meant to be. I really like the tutorial, and the `ask` and `echo` constructs. I will show it to my son.
- swiftcoder 2y agoStill, it's nice to engage with folks on their own terms, and not just blindly assume they'll want to work in English all their life. I kind of miss the early 2000's, where a bunch of pretty well-known French and Belgian academics were publishing source code in their own languages (#define to remap keywords and all)
- keyle 2y agoNice, I was unaware of this. Take OCaml for example, it was primarily developed by the French if I recall OCaml was written in 1996 by Xavier Leroy, Jérôme Vouillon, Damien Doligez, and Didier Rémy at INRIA in France Yeah, but they didn't write keywords in French, they went straight to `let`, `rec`, `if`, `then`, `else`... Because they're just keywords, they could just be punctuations; so as long as you don't go full brainfck.
- Athas 2y agoThe comments were quite often in French, however! Until relatively recently, the OCaml compiler would also sometimes emit error messages in French in some obscure cases.
- octachron 2y agoHow long ago was this "relatively recently"? When I translated all the remaining French comments in the OCaml compiler nearly 10 years ago, there were already no warnings nor error messages in French.
- 2y ago
- broken-kebab 2y agoSoftware development has its lexicon derived from English. Not learning it does exactly zero favor to kids. On the contrary: their time is wasted, they will need to learn it anyway, and it's sad that some well-intentioned people make them skip what cannot be skipped. And the mistake seems to be repeated every 5-7 years. One can gather a whole cemetery of such initiatives, the earliest dating back to 70s I believe
- incrudible 2y agoMoreover, in the age of LLMs every child can have an infinitely patient assistant explain them how to do things in any mainstream language. Even before LLMs, the ability to Google something was proportional to the popularity of the language. When we teach children math, we do not teach obscure boutique notation, we teach what everyone knows, even though there are alternatives that would certainly work better for teaching.
- suddenlybananas 2y ago>When we teach children math, we do not teach obscure boutique notation Actually, you do. There's a reason you teach kids multiplication by aligning blocks into groups and things like that, rather than jumping straight into rote algorithms.
- jtwaleson 2y agoHedy is designed for use in classrooms, and reaches many kids who otherwise would not have tried programming at all. See it as a stepping stone towards programming rather than a great language. Disclaimer: I've been involved with the project (in a tiny way), and am a fan.
- broken-kebab 2y agoI see what you mean, and I don't enjoy criticizing the initiative, but I volunteered as a programming teacher for several years, and my experience makes me believe you are on the wrong track completely. English has never been the major obstacle to teaching programming. 1. English is taught widely, and they need it anyway. 2. The lexicon to master is pretty short. 3. Kids naturally learn words. Say, with moderate interest in K-pop a European teen can remember Korean names, sometimes even in Korean script. 4. "For" in programming is not the same word as "for" in natural language. You may be under illusion that when it's in a local language, it will be easier to digest, but it's not. You need to explain its separate meaning anyway. And when you did it not in Programming English - sorry, you simply missed the opportunity. You spent roughly the same amount of time to create a redundant word-slot in student's memory. 5. "Tried" is not a valid metrics for success here. One could as well offer free cookies, and number of tries would be growing. But that elephant in the room will look at us without approval!
- nottorp 2y agoThis is as bad as dubbed movies instead of the original audio with subtitles if you ask me. And no, I'm not a native English speaker.
- librasteve 2y agohere’s some raku lang in welsh… https://github.com/finanalyst/rakuast-L10N-CY https://github.com/finanalyst/rakuast-L10N-CY fy $choice; fy $continue; fy @bad = <damn stupid nutcase>; ailadrodd { $choice = prydlon "Type something, like a number, or a string: "; dywedyd "You typed in 「" ~ ($choice ~~ unrhyw(@bad) ?? "*" x $choice.golosg !! $choice) ~ "」"; a-roddwyd $choice { pryd "dragon" { dywedyd "which is 'draig' in Welsh" } pryd unrhyw(@bad) { dywedyd "wash your mouth with soap" } pryd IntStr { dywedyd "which evaluates to an integer ", $choice } pryd RatStr { dywedyd "which evaluates to a rational number ", $choice } rhagosodedig { dywedyd "which does not evaluate to a number " } } $continue = prydlon "Try again? If not type N: " } hyd $continue eq unrhyw(<N n>)
- gorkish 2y agoAnd for OG Perl, Damian Conway gives us classical Latin! use Lingua::Romana::Perligata; adnota Illud Cribrum Eratothenis maximum tum val inquementum tum biguttam tum stadium egresso scribe. da meo maximo vestibulo perlegementum. maximum comementum tum novumversum egresso scribe. meis listis conscribementa II tum maximum da. dum damentum nexto listis decapitamentum fac sic lista sic hoc tum nextum recidementum cis vannementa listis da. dictum sic deinde cis tum biguttam tum stadium tum cum nextum comementum tum novumversum scribe egresso. cis
- EdiX 2y agoThis isn't really new, there have been projects like this since forever. Microsoft used to ship one with Office, even. I wish they had published something about why they stopped doing it, maybe that would prevent people from repeating the same mistakes. I was subjected to one of those translated programming languages 20+ years ago: they are traps two weeks in you realize you can't do anything without either learning a different programming language (with english keywords) and reaching for external libraries that will define english identifiers and often even have english documentation. I wish I could get back every minute I spent with it and could reinvest it into learning english.
- monsieurbanana 2y agoI don't know the one that shipped from Microsoft, but I'm going to assume it's goal wasn't to teach people how to code but rather empower non-programmers to code. Starting from that, I don't see the two would be similar.
- zanellato19 2y agoI know several programmers who don't speak any english and can understand the things well enough. I think this is a valid project and while most programmers I know eventually understand a bit of what the identifier of english mean, the concepts are much better explained in their native language. They can much better translate it later when moving to a "serious" programming language or even to Excel or something like that. Excel functions are also translated, so stuff like that is really helpful even if you aren't going to become a programmer.
- chris_pie 2y agoAlso Excel functions are translated based on your region. Which I find annoying, because most learning resources and references are in English, and English function names don't work in other regional settings.
- canucker2016 2y agoI have no idea how this got through management. The localizers went too far, converting the language keywords to somewhat appropriate language-specific versions. I guess once they shipped a version with the keywords translated, they decided to was too expensive to fix/go back and limped along with this major footgun.
- zoezoezoezoe 2y agoI really like this idea, going from something extremely basic and gradually building into python. I am very interested to see if this goes anywhere.
- 33a 2y agoFor what it's worth, my kids really like this project.
- wruza 2y agoI was around 9 and didn’t speak English at all when I first met a computer with ROM BASIC in it. My struggles were with understanding the structure and my daily driver was making games. BASIC was sort of harder to get compared to e.g. Pascal cause it was less structured. English was not an issue at all. And print/input/print loop gets boring immediately. You need graphics, and sounds, and a library of these, and algorithms that make it move. I had to imagine that circles were characters and SOUND 50, 2 were the effects. I remember two instant-games environments - Gambas and Löve2d, but there should be much more now.
- rickydroll 2y agohttps://www.youtube.com/watch?v=8vjEnkQdaHM&t=2s https://www.youtube.com/watch?v=8vjEnkQdaHM&t=2s Sorry, my mind makes weird jumps and pulls up movie references
- kerkeslager 2y agoI've pretty much concluded after a few decades that "learning" programming languages are a bad idea. If your language doesn't give students all the tools necessary to build a production program, you're sending them down a path that ends in a dead end. Sure, you can learn loops/ifs/functions in whatever language, but those concepts are a means to an end. Students don't start learning a programming language because they want to learn loops/ifs/functions, they start learning a programming language because they want to build something--a website, a video game, a tool that spams their friends' emails with fart jokes. If your language can't do all those things, it's not empowering students to do the things that got them into programming in the first place. Multilingual programming is a great idea, but it needs to be a feature in a production-quality general-purpose programming language, not in a learning language. I've been working on a programming language interpreter for a while, and I'm thinking about how I'd implement this. Here are my thoughts on a rough design: All the keywords in the language should be in a "language pack" for each of the supported natural languages. These should map one-to-one to some central language. When you write your code, you write it in your native language, and then run a tool that translates the code into the central language. The central language code, not your native language code, is what you commit to git. When a programmer checks out the repository, the first thing they do is run a tool which translates the code into their native language using the language pack. This is why it's important that the mappings be one-to-one. The tricky part here is variable names also need to be translated. This is an easier problem than translation of natural language usually is, because variables are going to mostly nouns, but it does mean that you can't have the typical /[A-Za-z_][A-Za-z_\d]*/ variable names--variable names need to be limited in some way to words which exist in the language pack. This creates a mess for language maintainers, but it's similar to maintaining time zone information in a standard library. One upside to the central language design is that bad translations don't have to be forever. The central language has to be reverse-compatible, but the translations don't, because when the user updates their language pack all they have to do is re-generate their native langauge source to get the better translations. The central language doesn't have to be human-readable, but it's not terrible if it is a natural language. However, I think it should not be English: English developers of the language should be dogfooding the translation system. Ideally you'd want your editor to display code in your natural language, translating to the central language in real time and only ever writing to disk in the central language, because we don't want be keeping natural language and central language files in sync. Vim/emacs/atom/etc. could do this with a plugin, but this definitely is not a trivial problem. Language packs should contain some standard formatting rules that make sense for the language, similar to `go format`, but there's no reason users couldn't configure the translation tools to use their preferred formatting.
- svilen_dobrev 2y agoshameless plug: python in bulgarian (or whatever you put in those translation tables). Well.. from 2012: https://github.com/svilendobrev/smok https://github.com/svilendobrev/smok
- chaosprint 2y agoLove the mission! My project Glicol (https://glicol.org/ https://glicol.org/) also has some classroom practice for sound 101 But I think what children need most is to provide very simple to complex examples for modification. The bigger worry is that other things, like Instagram, become more appealing than learning to code.
- lo_zamoyski 2y agoOne of the key insights that the HtDP curriculum was designed with was that industrial languages are a poor choice for learning programming. Think about how you learn math. No one drops all of arithmetic on you all at once. You learn one thing at a time. You learn addition first. Then you learn subtraction. You don't talk about negative numbers until you've mastered positive numbers. You need to build up mathematical knowledge piece by piece, layer by layer. Mathematicians are just people who are further along than others in some respect. Now, some will say that all you need to do is walk through each basic construct in the language to build up understanding. There are two problems with this approach. First, this misses the point of programming. The point of programming is to solve problems, not learn language features. Language features are instruments for solving problems and expressing their solutions. They're also a notion to help you reason about them. Second, a full-fledged language will produce inscrutable error messages that will confuse the student. It prematurely drags in concepts that the student is not ready for. So the HtDP curriculum works with a hierarchy of student languages that give the student the freedom to explore and experiment within a space that is well-defined, well-understood, confined, and comprehensible according to their readiness. Over time, the language of discourse is expanded. English keywords are not the stumbling block. Plenty of young people pick up programming languages without knowing English. What poses the greatest difficulty from the perspective of the language is having access to the full language all at once. Also, never talk about the computer. Computers are to programmers what telescopes are to astronomers, to borrow from Dijkstra. In the HtDP curriculum, they ban students from talking about the computer, instead preferring "the compiler" or "the interpreter" or whatever. Implementation concerns are dealt with in later courses, because while practically useful, they are incidental to the basic act of programming.
- ejplatzer 2y agoThis seems to align almost exactly with Hedy's methodology. The translation aspect of the curriculum is nearly an afterthought in comparison to how much work was put into developing simple lessons that teach one thing at a time, asking students to solve problems of increasing complexity using the tools as they're introduced. Start with printing text, then add echoing input, then variables, then lists, working up pretty quickly to very simple shape drawing and graphics, and in a flash students have all the building blocks to make a fun little game or interesting experience.
- m0llusk 2y agoExperimented with something like this for a while. Translate a kind of plain language into Javascript. Once that is done then alternative languages can be used, translated into the plain language, then into Javascript. The problem I came into when trying to build even a small web application this way was all the common interfaces such as built into Node. Translating the language is a solid start, but real world usage means translating or at least accessing all the terminology and data types and interfaces for whatever stack is being used.
- BSTRhino 2y agoMy project Easel (https://easel.games/about https://easel.games/about) is also trying to be a good first programming language for teenagers! So many projects try to innovate teaching programming by lowering the barriers, but not enough effort trying to increase the fun, so that is what I'm trying to do
- gdevenyi 2y agoTisk tisk using my location information to decide on the webpage language instead of my preferred headers.
- zombot 2y ago> Hedy also works on phones and tablets. You shouldn't go mention that to the kids, it only gives them ideas...
- tijl 2y agoI tried Heddy with my children. It worked great at first. It's really easy to get started with. Every level, the language changes slightly to introduce more concepts. That worked great for my younger son, but it confused his brother. Code that was correct in one level, suddenly gives errors in the next. In the end, we stopped using Hedy. I now teach them Python instead. It's harder at first, but at leastthe things they learn, won't change.
- sitkack 2y agoI might be mistaken, but I think that is part of the progression from natural language to structured programming. The student is supposed to slightly refactor their code as Hedy morphs into a normative language. But in the end, it is a starter language and it looks like your kids started!
- oerdier 2y agoAt https://www.hedy.org/learn-more https://www.hedy.org/learn-more many of the listed 'research' items are bachelor's theses supervised by the creator of Hedy, with topics such as 'creating Syntax highlighting for Hedy'. To me this comes across as padding and disingenuous.