9 ms·
I agree with your complaints about QBasic but I disagree a bit about JavaScript. You are totally right that the environment being right there in the browser is
by wvenable 11y ago
I agree with your complaints about QBasic but I disagree a bit about JavaScript. You are totally right that the environment being right there in the browser is great. But if you press F12 right now you'll find an amazing complex dialog box -- as a professional you just implicitly skip over that complexity. And JavaScript is a significantly more difficult language than QBasic even if it's one of the simpler professional languages.
When I taught my daughter about programming I actually installed an old copy of Visual Basic 6.0 and it was really good for that. You draw the UI and the interact it with it mostly procedurally. She created a small useful application out of it. It's kind of crazy that in 2016 all our programming environments are more complicated than VB6.
- snuxoll 11y agoNot quite 100% the same, but Python + QML comes pretty close, or once support for composite templates finally lands Python + GTK3.
- dragonbonheur 11y agoIt's always Python+X somehow, where X is a whole different thing you have to learn to get a fraction of the whole thing shipped in Python. Keep I.T. simple - teach the kids BASIC.
- digi_owl 11y agoThe basic issue is that Python do not have a UI lib of its own, so if you want to do anything beyond a CLI you need to introduce a third party.
- snuxoll 11y agoIsn't TK usually part of the standard library? Of course, then you have to build your UI in code, which can be a lot for a beginner - which I why I stated QML or GTK Composite Templates, both allow you to design your UI in the relevant tool (QtCreator, Glade) and then just wire it up. Speaking from experience, the trial and error of creating UI's in code instead of through a markup language with an editor that can preview it is a pain.
- GregBuchholz 11y agohttps://docs.python.org/2/library/turtle.html https://docs.python.org/2/library/turtle.html Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win 32 Type "help", "copyright", "credits" or "license" for more information. >>> import turtle >>> turtle.forward(100)
- copperx 11y agoWell, Java does have a UI lib of its own and it doesn't make shipping an executable simpler.
- digi_owl 11y agoThis is not about shipping executables. Its about kids being able to sit down and bang out a program, complete with a UI.
- dragonbonheur 11y agoMost kids want to make games and have their friends and the world play them. Desktop software isn't dead either. Real artists ship.
- snuxoll 11y agoI don't really think GTK is that difficult to get a grasp on with composite templates. It's a little less "magic" than VB6 since I'm not just dumping code into a partial form class where the rest of the accessors to the COM controls are generated for me, but it's pretty straightforward in Vala right now (I use glade to design a UI, much like the classic WinForms designer - annotate a class with a GtkTemplate attribute and then put GtkChild attributes on class members to have the widgets automatically assigned there). In Python it'd look like @GtkTemplate("my_window.ui") class MyWindow: @GtkChild my_textbox @GtkCallback def button_clicked(self, btn): my_textbox.text = "Hello, World!"
- dragonbonheur 11y agoGTK in FreeBASIC is simple as well - just translate the C function calls into BASIC. FreeBASIC is really C++ without the curly braces so it's really a good covert way to gradually turn userland programmers into system programmers
- jsnell 11y agoYes. I've been doing Javascript + HTML games with my 9yo nephew every now and then, and the complexity of the environment as a whole is incredibly discouraging. Sure, he gets assignment, functions, conditionals and other basics. But the interface between the logic and the presentation is just so incredibly abstract that getting from those basics to anything interesting is way too hard. I've been thinking of switching over to some other environment the next time we do that. The immediacy and integration into an environment he already uses every day are compelling advantages, and it'll be a shame to lose them. But it does feel like the downsides easily outweigh the benefits.
- dkopi 11y agoConsider using an HTML5 canvas (with a 2D rendering context) instead of DOM manipulation. It makes programming very similar to QBasic's LINE, CIRCLE, PAINT.
- jsnell 11y agoI write a lot of stuff with the Canvas in general, but it's not great for teaching programming. The Postscript imaging model is again very abstract, complex, and easy to misuse early on. It can be made to work if by setting up a lot of scaffolding up front. And then there's interfacing the other way around, which the Canvas doesn't help at all with or makes even more complicated. It's somewhat easy to explain an onClick handler for a HTML button; doing a useful onClick handler for a canvas, or body-level onKeyDown handler are again much more complicated affairs.
- kowdermeister 11y agoCanvas is not a bad idea, but try Processing also. API is really simple, documentation is great filled with examples.
- jasode 11y ago>But if you press F12 right now you'll find an amazing complex dialog box -- as a professional you just implicitly skip over that complexity. That observation is fascinating to me. Isn't it possible that we're judging it with adult eyes? To me, kids can filter out "ui complexity" that's not relevant to whatever exploration they are doing. Examples I think of: A microwave oven[1] might have 25 separate buttons on it but a 6-year old will know the 2 buttons to press to heat up the popcorn. Yes, the keypad complexity handles more advanced techniques of 2-stage cooking with different power levels etc but the child just ignores all of that. Or, how many of us grew up with those multi-component integrated stereo racks?[2] The front panel has all those buttons, sliders, knobs, and lights. And yet, a small child knows how to turn the FM knob to find his favorite radio station or rewind a cassette to replay a song. I also see video games[3] that 6 to 8 year olds play (even if the game wasn't intended for that younger age group). To me, the screenshots show a complex "dashboard" at the bottom of weapons or other status. (I'm not a Starcraft player and it all just looks complicated and confusing to me.) I think kids can look at the "complex" F12 screen the same way as microwave ovens, stereo receivers, and Starcraft screens: ignore the non-relevant UI elements and just type "alert ("hello");" [1]https://www.google.com/search?q=microwave+oven+keypad&source=lnms&tbm=isch https://www.google.com/search?q=microwave+oven+keypad&source... [2]https://www.google.com/search?q=integrated+stereo+rack+turntable+fm+tuner+cassette+deck&source=lnms&tbm=isch https://www.google.com/search?q=integrated+stereo+rack+turnt... [3]https://www.google.com/search?q=starcraft+ii+screenshot&source=lnms&tbm=isch https://www.google.com/search?q=starcraft+ii+screenshot&sour...
- takno 11y agoDoes anybody at all know what more than 2 buttons do on their microwave? I thought they were mostly there for decoration
- todd8 11y agoThe real problem is there is no ISO Standard for the appliance interfaces. Do you press power level first? Or time first. Is it Forth like, numbers then operation or Haskell like, Function then number. My refrigerator has illuminated bars indicating how cold it is set for. Even after downloading a pdf of the user guide I can't figure out if I'm setting it correctly. Placing a thermometer inside and using trial and error solved the problem (after a few frozen bags of spinach).
- chocolatebunny 11y agoHave you looked at Scratch?
- wvenable 11y agoI think Scratch is the wrong approach to teaching programming altogether. It's cute but it doesn't give the same thrill as turning text into action.
- jovanni 11y agoI think the "thrill of turning text into action" might be an adult sentiment. I wouldn't write this off. I decided I wanted to learn to "program" when I was 8, but I had no mentors, and no adults I knew could tell me how programs were made. I found QBasic lurking in the C drive, and got some books from the library, but without anyone to help my 8 year old brain couldn't get far alone. I got it to switch resolutions and draw some static pictures, but nothing else. I was frustrated. Eventually I found and started playing with Games Factory, then Multimedia fusion from Clickteam, which is is sort of related to this, programming without typing. It was something my 10-year old self could understand on its own! I got a solid intuition of thinking in logic, and. Being able to set up some crazy causes and effects myself was really exciting. I made some "cool" stuff, for a 10 year old. Once I found that limiting I tried to learn text-based programming again and by that time I was able to read code and puzzle out what it did from the concepts I learned. Maybe being a couple years older helped too. I can't stand using tools like that as an adult, but without visual programming, I probably would've given up. Yet I paid my way through college writing Java/AS3/C, and now I made a living in games.
- wvenable 11y agoDon't get me wrong, I think that any environment aimed at children needs to be highly visual. One of the most common environments for teaching programming to kids used to be Logo. But it was still 'type commands' => 'produce visuals' and I think there is value in that. A lot of Logo wasn't even producing programs but seeing what crazy affects you could get through one line of "code". Almost almost all modern programming environments, including JavaScript in the browser, require a lot of work to produce a simple visual. However, Scratch feels like it does too much and becomes more like solving puzzles rather than creation.
- jmiserez 11y agoVisual Basic 6.0 was great for learning how to program! You could create GUIs and easily share self-contained exes with your friends. Also very cool was the documentation, complete, offline and and with lots of examples. I initially got into programming through Apple HyperCard/HyperTalk on the outdated school computers, but it was rather clunky and limiting in what you could do without going through the C interface.
- rbl 11y ago> Also very cool was the documentation, complete, offline and and with lots of examples. I think 'online' [1] is the word you wanted to use. ;) [1] https://en.wikipedia.org/wiki/Online_help https://en.wikipedia.org/wiki/Online_help
- jmiserez 11y agoWell yes it was online in that sense, which was great. But what I meant to point out was that the complete MSDN help library came shipped on two CDs that you could locally install. It was really really good. There was a description, detailed background info, and usually at least a few example code snippets using the function. I was later a astonished at how sparse and useless documentation for many other libraries/languages was compared to that, especially when it came to example usage. Some notable disappointments included e.g. the Java/JDK docs (v1.4) and the early Android docs (v1), which both required looking at the code because the docs were severely lacking (both have improved by now). I think you can still download the whole MSDN help library for offline use, but I don't believe that nowadays that would be enough for daily work use. Lots of useful info and example use is scattered around blog posts and StackOverflow answers now, instead of being a part of the documentation itself.
- pilif 11y ago> self-contained exes Not really. The VB6 exes required a huge runtime to be installed. Plus all the visual controls lived inside of OLE DLLs als native code and you had to ship these too (and register them on the target machine) This was the biggest motivator for me to move to Delphi because that actually produced self-contained exes and allowed you to call any Windows API directly without any COM wrappers in between. And you had a real type system. And pointers. But you still had an easy GUI editor and a very good class library that was incredibly easy to use.