So this kid is like "Teacher, teacher! What is Parsing?" And I'm like: "Don't worry child. I have the dragon book right here!" 6:46😂
@samhughes17472 жыл бұрын
Guys, she gets it; programming languages are examples of LANGUAGE, and she is engaging ordinary, classic techniques of linguistic pedagogy. "If a kid writes the 'a' wrong, we don't go, 'Physics error. Floating A,' we say, 'Good job! You can do letters!'" -- a total boss! As a professional software dev, amateur philosopher and linguist, and husband to an elementary teacher responsible for her school's "Digital Literacy" class, we've long been fans. She's a classic "STEM Girl Hero", and we're here for it!
@ccgarciab2 жыл бұрын
As an ocasional programming tutor, I had started to think a tiny bit about incrementality after having to tell students one too many times "this is something too complicated for now, just do it like this for now". Seeing it not only as a well structured proposal but as a full blown platform is so exciting! Go Felienne! I'll have to find time to bump spanish support to the same level as english.
@DavidSmith-ig4tx2 жыл бұрын
Absolutely brilliant! I've seen many people (of all ages!) struggle learning programming, and I believe this approach is absolutely the best way forward. Really great ideas.
@tompov2272 жыл бұрын
This is super! Having taught programming, it's so difficult to say things like "you just have to write it this way you'll see why later just trust me" Having a language that doesn't require quotes until you want it just by itself is so amazing for teaching. The built-in lessons absolutely blew me away what a fantastic teaching tool
@samhughes17472 жыл бұрын
Yeah, dude. It's like, you need to go full-on alien-talk, before deconstructing it, and explaining bits and pieces. As a professional software dev, there are times when I need to take that tact with coworkers, who needless to say, are also professional programmers. This is possibly the coolest talk I've heard all year.
@jacekandrzejewski70782 жыл бұрын
This is amazing, I think solutions like that could help even professional programmers learn. Yes, adults can take more suffering but it would still be beneficial, speed up learning and make it stick better, especially when it comes to novel concepts or fully different paradigms.
@spidermine632 жыл бұрын
Amazing presenter, educator and coder. Great talk.
@juliusfucik40112 жыл бұрын
I learned Basic from a book in a language I did not understand. I would copy the code too and then pick it apart to learn. Moved on to Turbo Pascal and C. Learned assembly and used it a lot in C. Then at uni Java and C++. Now mostly do Python and C++. Dabbled in Rust. There is no easy way to really learn unless it is fun. I think growing up in the 80s, the hardware was still easy to understand. You could easily understand assembly by knowing some hardware properties. PS. Going to try to get my 9 year old to do Hedy. I think she will love it, especially with the text to speech!
@scottcampbell27072 жыл бұрын
The Basic Computer Games book was actually pretty good because it forced you to figure out what each line did. Most of the time, the program would not work correctly the first time. Every computer back then had a slightly different BASIC with a slightly different command set and syntax, so you had to make small changes to the program to get it to work on a TRS-80 or an Apple.
@luna0102 жыл бұрын
As a teenager who is currently attempting to get the hang of low level development, I yearn and envy for a time when hardware was less complicated. At least 50% of my time is spent reading specification documents and googling various four letter acronyms, rather than actually programming.
@astrosticks Жыл бұрын
One of my favorite talks from this channel. Even besides your wonderful software, thank you for putting this out there to help us put ourselves in the mindset of a beginner
@linerider1952 жыл бұрын
"The syntax creates so much cognitive load on the students that they can't focus on the concepts". Yeah, I'm fairly sure that is a problem for professionals too! Awesome talk
@Rohan-bg8ci2 жыл бұрын
Terminal barking at me all the time yeah that's a valid cognitive load
@Daniel_Zhu_a6f2 жыл бұрын
never had problems with language grammars, actually. it's not much of a problem even in functional languages, and it's definitely not a problem in languages like python. there are many other things that are hard though. there are numerous studies of brain when people do programming, and it appears that programming is mostly hard because it pushes short-term memory to it's limits and beyond. most energy is spent on remembering available definitions and imagining program states at runtime (this is partially why traditional stateful oop with deep inheritance hierarchies is very exhausting). kids simply have much shorter attention span and are not good with keyboards, this is why commas and semicolons are so hard for them.
@odomobo2 жыл бұрын
I started learning how to code basic when I was 7, in the 90s. I sometimes wonder how I could have learned if I was 7 now. This seems like the perfect language
@pauek Жыл бұрын
This is why we need so many more women in STEM: their goals are different, refreshing, useful and beautiful. And the brilliance is through the roof.
@fantasypvp2 жыл бұрын
3:35 the rust compiler is my best friend :) (Context: I'm 16 studying A level computer science but I taught myself to program before any of my teachers taught me (took GCSE), started with python and then moved onto rust for some of my projects)
@l3gacyb3ta212 жыл бұрын
hah yeah, rust is super helpful :> not the easiest for 6th graders tho. also hi fellow compsci teen!
@kabirpesh2 жыл бұрын
Amazing and meaningful work, keep it up. Love your philosophy and approach to teaching.
@goyod8962 жыл бұрын
Awesome talk on an amazing subject by a brilliant speaker. I'm impressed.
@zapazap2 жыл бұрын
Do you have adventures designed to help with the progress of computing _concepts_ along with the syntax? E.g. contrasting adding actual numbers with adding 'phone numbers'? I look forward to looking into Hedy and seeing your introduction of functions. I am also interested in step by step introduction to best practices like unit testing and versioning. With that, and with only modest code complexity, do you anticipate kids finding a sporty-enjoyment in refactoring each other's code?
@LandNfan2 жыл бұрын
As a self-taught COBOL programmer, circa 1975, the first thing I learned is that the compiler is NOT your friend.
@ahmadkhudai2 жыл бұрын
Great concept! Love it
@varosiBG Жыл бұрын
Your work is amazing! I’ll try to put it in practice in Bulgaria.
@zapazap2 жыл бұрын
To what extent is your stepwise progress coupled to the syntactic features of the target language python? Eg is it easily modifiable to teach to Scheme? Even better: is it amenable to facilitate a student shifting between languages? The syntax side of things is less interesting (and probably less challenging) than paradigm shifting. E.g. it would be nice to see a stepwise introduction to concurrency, and then (perhaps!) to see how Erlang handles concurrency compared to Python. Heady (Hedy -- heh) ideas for students, but I long wanted to explore the degree to which such things can be taken on board by children _if there are simple real world application that would motivate._ E.g., perhaps, student built chat servers. E.g., perhaps, very trivial games. Like HiLo: I (the poser) am thinking of a number between one and one hundred, and you (the solver) have to guess it. With each guess I say if you are too high or too low. Level 110. Very easy for a child. Program the poser. Level 210. A bit harder. Program the solver. (Intro to the concept of binary search). What interests me is, once the students accomplish this, us the motivation and pedagogy to move to... Level 310. Have the students various poser programs and solver programs _play against each other._ Issues involve (I) networking and (Ii) coding to an shared interface. What I suspect is this: with the right software infrastructure support (I don't expect the kids to reinvent sockets from scratch), the conceptual challenge of 310 might be less than that of 210. And I think 210 is doable. And if the idea of 310 is present from the start, that might be a great motivator for the children to work together. The pedagogical challenge: Filling all the steps from the last Heda step ('018' say) to step 310. As far as language nuts and bolts go, this could be a stepwise introduction to features of the Python standard library. But more significantly perhaps, it would be conceptual progress. If this can be explored in the spirit of Heda, or as kind of progression of Heda, _in particular, to see how far this can be realized with children,_ I am all in. Thus ends my conversational gambit to you ma'am. It's time for me to go online and explore what you have already wrought. It sounds wonderful. P.S. Two final words:._Automated grading._ :)
@MrBarberousse2 жыл бұрын
Part of my programming learning was using Logo with a French manual and a French interface. Localization was a big help.
@robgrainger53142 жыл бұрын
Logo and Smalltalk both are very approachable by kids, largely because both were designed with that at least partly in mind. Smalltalk never got the localisation bit though, and that's something I've thought of before as a barrier for learning.
@NoNameAtAll22 жыл бұрын
Yey! it's Felienne!
@letMeSayThatInIrish2 жыл бұрын
Immensely good idea! In what other field than programming do we have to perform perfectly from the first attempt? I would love to see gradual versions of other languages.
@exl5eq282 жыл бұрын
I've started helping translating to Chinese, but met some problems: 1. It's hard to translate without seeing the context. Seeing nearby strings helps, but doesn't really solve the problem. 2. Some editing history is confusing. Why did word "device" become "Hedy community"? Again, it would not be confusing if I can see the context. 3. Things like "We can't type `I'm` because Hedy doesn't understand apostrophe" only make sense in English.
@NoNameAtAll22 жыл бұрын
regarding #3, maybe english vs non-english text would work? or... how does mandarin write glotal stops? like in translations of fantasy names ("Tok'ra") also who recieves translations? I'd love to try translating too
@felienne2 жыл бұрын
These are great points! Please join us on Discord so we can chat about it in depth!
@rainworldenthusiast2 жыл бұрын
This talk is absolutely wonderful :)
@robgrainger53142 жыл бұрын
Love this project, I wish it every success.
@health_doc2 жыл бұрын
Amazing idea with language levels!! Really man my main stream languages can benefit from this concept. How about if error messages would highlight with a circle the position of the error directly in the source code. That make it much simpler.. like when you make a screen shot for a friend and you circle the important bit
@Avantarius2 жыл бұрын
if it is for teaching, then why use "print" if there is no printer involved? why is the command for writing text on the screen not simply "write"?
@joranmulderij2 жыл бұрын
It's brilliant that level 18 is a subset of Python!
@kichrootra2 жыл бұрын
cool idea! will try to introduce my younger brother to programming through this.
@paulk3142 жыл бұрын
6:42 I have a story very similar to this. I remember trying to learn to program in C at around age 15. The compiler gave me an error message with either the word "parse" or "syntax", and I didn't know what the word meant so I looked it up in a dictionary. Which of course didn't help at all. Learning to program was a grueling process.
@RoamingAdhocrat2 жыл бұрын
I love everything about this talk and this project.
@minecraftblocklander2 жыл бұрын
That is awesome, I'll start using it immediately
@eldathray9703 Жыл бұрын
at 20:56 the speaker looked at the audience and said "thank you!", then they all applaused. so curious about what happened at the time!
@zapazap2 жыл бұрын
As a teacher, _thank you for letting me set the adventures!_ :)
@edgeeffect Жыл бұрын
Thinking of Dutch keywords... since we started using screens instead of teletypes, "print" hasn't really made any sense in any natural language.
@lerneninverschiedenenforme75132 жыл бұрын
love the concept!!
@gargleblasta Жыл бұрын
Ziet er goed uit!
@UliTroyo2 жыл бұрын
Felienne rocks 😎
@neoillogic2 жыл бұрын
this is great!
@Verrisin2 жыл бұрын
would it be sensible to start by teaching them Excel? I don't remember, but I think I started with excel ... That's pretty simple, and you can have expressions and stuff ...
@ittixen2 жыл бұрын
That's *so* great!
@LeetMath2 жыл бұрын
snap! is what i think people should learn to follow scratch, instead of this text stuff. if you are teaching how to do text stuff, teach basics of using command line and file system, instead of trying to teach fundamental programming concepts. the blocks used in scratch and snap! are good for removing cognitive load of worrying about syntax and focusing on programming concepts. once you have command line and programming concepts, and stuff like data structures, then you can worry about learning how to figure out a text lang’s syntax.
@LeetMath2 жыл бұрын
something like scratch or snap! can teach about types. maybe not structs. once you are able to explain parsers and compilers, then i think is a good time to deal with text languages
@modernkennnern2 жыл бұрын
I love this
@fg-zm2yu2 жыл бұрын
A very good revelation: the computer is not smart
@valentinogiudice80092 жыл бұрын
I see no reason whatsoever for programming languages to be based on Spanish instead of English. My native language is Italian. When learning a programming language, I am learning an entirely new language. It's not English, it is only derived from English. Italian is derived from Latin, but knowing one will not mean that you know the other. If anything, keywords being in a non-native language might even be a slight advantage, since they don't already have too strong a natural meaning (since the meaning in programming languages is usually very different from that in English). Now, if someone isn't used to the Latin alphabet, I would presume that writing in a programming language based on English would indeed be harder. But Spanish and English use the same alphabet.
@PhysicsGamer2 жыл бұрын
Hm. This seems like it's approaching the problem kind of backwards, to me. And kind of highlights an issue I've always had with using Python as an introductory programming language. Namely: Python makes no sense. I don't mean that as the insult it sounds like, to be clear. A lack of enforced consistency is more or less a deliberate part of the language's core design, and it's a large part of what enables Python to be such a flexible language. However, as a result there's a lot of stuff in the language that just kind of... _is._ You all know what I'm referring to - it's the little inconsistencies that when you ask about them on StackOverflow you get the word "Pythonic" repeated at you a bunch. Especially in the form of the phrase "That wouldn't be Pythonic!" And the result of that is exactly the problem described at the start of the presentation: kids who are totally unfamiliar with any programming language get introduced to Python only to wind up hyperfocusing on learning a textbook's worth of rules and syntax as little more than magic spells to get the computer to stop shouting at them. I wouldn't be surprised if the system described here does a better job of teaching those magic spells... but I'm not sure it actually helps with the underlying problem as such. In either case the end result is a very top-down way of learning how to program, full of lots of "don't worry about that for now, just memorize it". This is why I'm of the opinion that kids should be started on a language like C++ or Java (though the latter has definitely slid from prominence in the last decade or so). The process of learning these languages is a lot more bottom-up, and realistically starts with lessons on what the core elements of a statement are. Early topics are thinks like keywords, variable naming, and literals. Once the building blocks are understood, _then_ students can assemble them into actual code. For example: "Curly brackets define a statement called a block, which is how you fit multiple statements where otherwise only one could fit at a time" is a lot more useful pedagogically than "This is the format of a function declaration. Memorize these bits of it, and remember these other bits are where you put the function name and the parameters. Especially the punctuation - you always have to get that right!". Instead of students wondering why a colon being in exactly the right spot is so necessary for a function to work, they _already_ _know_ what the curly-brackets mean. Indeed, I've always found C++ to be especially good for this. A function declaration is literally just a glorified variable declaration with a parameter list and a block added. If you've already introduced the students to the idea of statements and blocks, then all you need to explain is the parameter list. Oh, and C++ also lacks syntactically significant whitespace. Syntactically significant whitespace is a travesty and shouldn't be anywhere near a programming language to begin with, but _doubly_ so any programming language meant for people new to programming. But that's something of a separate issue.
@LowestofheDead2 жыл бұрын
Sorry but I have to disagree. No matter how inconsistent Python is, C++ has a hundred times more syntax peculiarities. Every little thing in C++ can be done a million different ways. I remember my first week learning C++ where I followed a guide online for hours and hours. Then I attended a class on it..and there was no overlap between the hours of docs and the _very first introductory_ class to C++, because that's how big the language is. C, Lisp or Smalltalk are better examples of internal consistency.
@encapsulatio2 жыл бұрын
C++ and Java are absolute trash. I recommend Nim...it's developer really is a genius when it comes to knowing how to make a safe very strongly typed language that's succinct, readable because it has python syntax and is as fast as C, yet it's AST based 0 cost abstraction macro system make you feel like you have Lisp or Perl like powers. In many ways it is just as productive as Python in spite of being compiled.
@encapsulatio2 жыл бұрын
@@LowestofheDead C, C++ and Java are absolute trash for both beginners and experts. I recommend Nim...it's developer really is a genius when it comes to knowing how to make a safe very strongly typed language that's succinct, readable because it has python syntax and is as fast as C, yet it's AST based 0 cost abstraction macro system make you feel like you have Lisp or Perl like powers. In many ways it is just as productive as Python in spite of being compiled.
@didibus2 жыл бұрын
I think this loses an important dimension to successful learning: "enjoyment". Kids the age she teaches, except for a few, will just be completely bored and uninterested in the structure and foundation of computer programming, unless you give them a reason to be interested. People don't need to start with Hedy and stop their learning there, they've started to understand the basics, but more importantly already learned the value and some of the possibilities that learning comp-sci and programming can bring, once they're done, they can move to Python, and then to Java, and then Rust, and then C++, and then Assembly, and then pure binary, and then learn to program in Lambda Calculus, etc. There's an evolution to all this, but the important thing is to get the kids hooked, interested, and continuously seeing the value of the effort they're putting in from learning harder and harder things. That's why I think the genius here is only teaching something for which they've faced the problem that it solves. P.S.: I think you might be thinking more university level, and I could agree there, I've seen junior join that nowadays seem to lack some deeper fundamentals, I've seen some not even really know what an array is, because arrays in Python are already such higher level than an actual array, they kind of skipped some of the concepts along the way, but in my opinion the issue here is not continuing that leveling up and filling the gaps, eventually they should also get exposed to more fundamental contiguous memory segments, or to pointers, and if their University skipped on that, they'd obviously have some knowledge gap. But again, I think this should be thought with purpose, have the student face an issue where Python's performance just doesn't cut it for example, and then show them the concept that can.
@LowestofheDead2 жыл бұрын
"We who grew up in the 80s had no teacher but the compiler, so we think it's our friend out of Stockholm syndrome. Just like a child who only has a beanbag to play with" 😂 This attitude is still dominant - we assume that some parts of programming "should" be hard and never improve them. For example, the Rust team built an amazing compiler that can, in many cases, identify exactly where an error is and what it should be... But they won't build something that fixes the error for you. It's like the compiler wasn't designed to speed up development, it's designed to 'train' you into doing things that could easily be automated.
@SimonBuchanNz2 жыл бұрын
There's plenty of languages that "know what you meant" (or more often, think they did), the most famous is JavaScript. The problem is not when it gets it right, it's not even when it gets it wrong, it's when it gets a bunch of things right in a row until it finally gets it wrong, such that you have no idea what went wrong.
@robgrainger53142 жыл бұрын
@@SimonBuchanNz Every attempt I've seen to be lenient to user error in language design is something I've ended up viewing as a design flaw rather than a feature. JavaScript and HTML both spring to mind. Better to just have very informative error messages. Of course, I have no objection to an IDE or other tool suggesting fixes, but automatically doing it seems unwise.
@LowestofheDead2 жыл бұрын
To clarify, I'm talking about *suggesting fixes* through a compiler's interface. Something like "Closing bracket missing on line 123 Press 1 to insert, press 2 to exit and modify yourself" So many errors have a few common fixes that could be made into suggestions. Even if there'd be an option to automate the most common fix for all errors, it can give you a log of every fix which you could check later - in case there's something you didn't want. I'm *not* talking about forced-automated fixing that can't be turned off or modified - like the semicolon problem in JS.
@clumsyjester4592 жыл бұрын
I supported this wholeheartedly until the point where she wished that real programming languages will support multiple natural languages. Whoever follows through with this wish will be responsible for the next 300 plane crashes, 10 widespread blackouts and at least one nuclear power plant catastrophe. Repeat after me: "STANDARDIZATION IS GOOD ... STANDARDIZATION IS GOOD ... STANDARDIZATION IS GOOD".
@ANSIcode2 жыл бұрын
I think the talk gives very good arguments why having language choice is good. Your worry, on the other hand is not understandable to me. Nobody will be writing flight control software in this language any time soon. On a more general note, even today, most good programmers cannot not be trusted with such critical tasks in any programming language without a lot of extra training and external processes to avoid mistakes. The diversity of levels of rigor and proficiency at which programming skills are useful to people will likely increase even more in the near future.
@PurpleYoshiEgg2 жыл бұрын
Not every language will be used in planes, power systems, for nuclear energy, or anything that can be catastrophic. The vast majority of programming is in Javascript, but you shouldn't write a flight control system in it.
@robgrainger53142 жыл бұрын
It wouldn't be acceptable for office software not to be localised, why is a programming language (or API) any different? If you don't want to use it on your project, I doubt it would have any impact at all. She's not proposing ignoring SI units, just replacing a keyword with another, or allowing right-to-left coding. It's easy to accept the status quo when it's not you its causing the pain to.
@BlaisePabon Жыл бұрын
"We've been Stockholm Syndrom'ed into thinking that the compiler is our friend" kzbin.info/www/bejne/nJ6paHumisRgb80