A new, kid-friendly Python editor - help page
*Absolutely must have*:
- Both windows open within one application (the shell window and text editor window).
- Simple buttons to run code
- A way to change font sizes easily
- Syntax highlighting
*Highly desired*:
- Error reporting that highlights lines and gives a good level of feedback to the user.
- REPL
- Projects
I'd also add some kind of integrated help page & language reference. This would be particularly useful when running on the Raspberry Pi as when I've seen Raspberry Pis used in schools they have often been off the school network.
I like the 3 pane view used in Sonic Pi, although for Python I think the command line should be more prominent and use the width of the editor. So I think it should be Top Left (most of screen) editor, bottom left (width of editor) command line / messages, right hand side help.
Context sensative help (hover / tooltips) would be good too, but I think that would be a nice to have rather than essential.
-- Stewart Watkiss @stewartwatkiss @penguintutor http://www.penguintutor.com
+1 for some sort of offline docs solution.
I was playing on a disconnected Raspberry Pi at the weekend (at PyConUK - hi everyone!) and struggled without Python docs.
If anyone on the Mac is used to Dash, it has been ported to Python as https://zealdocs.org/ - a cut down version of this built in to the editor would be AMAZING.
On 22 September 2015 at 10:53, <stewart@penguintutor.com> wrote:
*Absolutely must have*:
- Both windows open within one application (the shell window and text editor window).
- Simple buttons to run code
- A way to change font sizes easily
- Syntax highlighting
*Highly desired*:
- Error reporting that highlights lines and gives a good level of feedback to the user.
- REPL
- Projects
I'd also add some kind of integrated help page & language reference. This would be particularly useful when running on the Raspberry Pi as when I've seen Raspberry Pis used in schools they have often been off the school network.
I like the 3 pane view used in Sonic Pi, although for Python I think the command line should be more prominent and use the width of the editor. So I think it should be Top Left (most of screen) editor, bottom left (width of editor) command line / messages, right hand side help.
Context sensative help (hover / tooltips) would be good too, but I think that would be a nice to have rather than essential.
-- Stewart Watkiss @stewartwatkiss @penguintutor http://www.penguintutor.com
Pythonedu-wg mailing list Pythonedu-wg@python.org https://mail.python.org/mailman/listinfo/pythonedu-wg
Yullo folks.
The 2c of a humble (*chuckle*) UX guy / code teacher / enterprise python user here.
What we’re not trying to do is create another power IDE for everyone to use. There are millions of these you can contribute to out there already if you want to do that. Its actually one of the most refreshing things about this project, the very specific target outcome— to take a user who doesn’t know how to write a line of code and empower them (in whatever learning environment they’re operating in) to understand and internalise the patterns of Python software development in the most efficient and enjoyable way possible. We want people to become great coders so they can write great software and we want them to have fun doing it.
I’m of the opinion that writing a big IDE that will be used for writing giant software systems is entirely counter to that goal. With this in mind then, what are the problems that this tool is trying to solve? Starting with these allows the identification of places where they have been solved in the past and then you start to innovate from there.
It might be worth starting a Trello or something for this (many of you have a much more academic understanding of these issues than I do which would be great for fleshing it out), but some key ones that I can think of are:
- Indentation
- Reflecting the transformation of variables throughout execution
- Assisting the user to identify, (and only then debug) simple syntax errors (without doing it for them)
- Scoping / Encapsulation
- Common language patterns (Looping / Conditionals)
I dunno, what else? Someone at PyconAU had a list of these if I remember correctly. Point I’m trying to get at is THAT is where this should start and testing against those goals should be how features get included or excluded.
Some other thoughts:
Why not stick to single file apps only (at least to begin with)? That is to say, there is a direct mapping in the users mind between the .py file, and the program they are running. They will then start to think of the script as the app, which resolves the issue with compiling binaries. Opening the app for the first time/without a file for context could just guide the user to create a .py file somewhere on their filesystem and double click it / drag it in.
When I was first learning to code C++ (my first language, and one I have never returned to since I arrived at the web) what I really wanted to do was create something that output something. Users need to be able to do some cool stuff pretty quickly.
Can there be some way to manage pip deps in a visual way? It’d be cool for each script / app to spawn its own venv magically in the background and then you could explore the PyPI as if it was an app store— how empowering would that be!
I’ve never got the idea of this “Spaces are better, as long as they behave like tabs” concept. While this is not the place for a deep and meaningful argument around whats better in the wild, I’d suggest this one be solved scientifically. What is going to be easier for the user when just starting out (in light of the above)? Does someone impartial want to run this discussion as a subproject?
I would always prefer to assist the user than to tell the user what to do. Let them explore and make mistakes, and then hint at how they can be corrected. That means forgetting the drop-downs and autocompletes— these are for lazy power users like me. I want my students to type ever damn character of the software they’re writing, so they can understand how they got to where they are ;).
It would probably be super powerful to come up with some kind of slick visual representation for objects and variables that could show the application growing and changing during its run… maybe even an interactive “app diagram” (can you imagine little blocks popping into life as you step through your application creating variables etc!). I for one know I represent my collections of objects visually in my head. Could be a great tool for visual learners.
While I don’t like frame-style programming as a replacement for text style programming (as was suggested by someone in one of the emails today) there are some great visual queues (and I’m sure many other ideas) in there that could be used. I suppose the focus needs to be that the coder should come out the other side able to write code. No shortcuts on that front!
I really like the idea of having including dictionary’s in there. If the user types a keyword in correctly they can highlight it or triple pinky tap or whatever the gesture is for it these days to get a popup that explains said keyword in detail. This could even be an activity — to have the user guess what they think should be next, and see if it actually in the language.
Can this just use Python 3 and be done with it? Backwards compatibility is for sissys (and in all seriousness probably doesn’t solve any of the problems the tool is trying to solve).
Thats me for now. I shall continue watching the emails.
Cheers. Ash.
---
Ash Guy. Serial Entrepreneur, Tech Junkie, Creative Thinker.
E: ash@ashguy.com
On 22 September 2015 at 7:53:33 pm, stewart@penguintutor.com (stewart@penguintutor.com) wrote:
*Absolutely must have*:
- Both windows open within one application (the shell window and text
editor window).- Simple buttons to run code
- A way to change font sizes easily
- Syntax highlighting
*Highly desired*:
- Error reporting that highlights lines and gives a good level of
feedback to the user.- REPL
- Projects
I'd also add some kind of integrated help page & language reference.
This would be particularly useful when running on the Raspberry Pi as
when I've seen Raspberry Pis used in schools they have often been off
the school network.
I like the 3 pane view used in Sonic Pi, although for Python I think the
command line should be more prominent and use the width of the editor.
So I think it should be Top Left (most of screen) editor, bottom left
(width of editor) command line / messages, right hand side help.
Context sensative help (hover / tooltips) would be good too, but I think
that would be a nice to have rather than essential.
--
Stewart Watkiss
@stewartwatkiss @penguintutor
http://www.penguintutor.com
Pythonedu-wg mailing list
Pythonedu-wg@python.org
https://mail.python.org/mailman/listinfo/pythonedu-wg
- Ash Guy <ash@ashguy.com> [2015-09-22 21:07:08 +1000]:
- I’ve never got the idea of this “Spaces are better, as long as they behave like tabs” concept. While this is not the place for a deep and meaningful argument around whats better in the wild, I’d suggest this one be solved scientifically. What is going to be easier for the user when just starting out (in light of the above)? Does someone impartial want to run this discussion as a subproject?
I think that's pretty easy to answer - almost all tutorials, resources, libaries, etc. use 4 spaces, as per PEP 8. Using something other than that will just introduce pain when copy-pasting code from somewhere else.
Notepad++ used to default to inserting a tab when pressing the tab key even when writing Python, and I think they changed it to four spaces because of exactly that reason.
- It would probably be super powerful to come up with some kind of slick visual representation for objects and variables that could show the application growing and changing during its run… maybe even an interactive “app diagram” (can you imagine little blocks popping into life as you step through your application creating variables etc!). I for one know I represent my collections of objects visually in my head. Could be a great tool for visual learners.
http://www.pythontutor.com/visualize.html comes to mind.
- Can this just use Python 3 and be done with it? Backwards compatibility is for sissys (and in all seriousness probably doesn’t solve any of the problems the tool is trying to solve).
+1
Florian
-- http://www.the-compiler.org | me@the-compiler.org (Mail/XMPP) GPG: 916E B0C8 FD55 A072 | http://the-compiler.org/pubkey.asc I love long mails! | http://email.is-not-s.ms/
Am Di, 22. Sep 2015, um 06:18, schrieb Florian Bruhin:
- Ash Guy <ash@ashguy.com> [2015-09-22 21:07:08 +1000]:
- I’ve never got the idea of this “Spaces are better, as long as they behave like tabs” concept. While this is not the place for a deep and meaningful argument around whats better in the wild, I’d suggest this one be solved scientifically. What is going to be easier for the user when just starting out (in light of the above)? Does someone impartial want to run this discussion as a subproject?
I think that's pretty easy to answer - almost all tutorials, resources, libaries, etc. use 4 spaces, as per PEP 8. Using something other than that will just introduce pain when copy-pasting code from somewhere else.
I think this is even easier to answer - many kids don't actually know what the tab key does.
Cheers Danilo
participants (5)
-
Ash Guy
-
Danilo Bargen
-
Florian Bruhin
-
Mark Smith
-
stewart@penguintutor.com