• I'm developing an app that teaches programming and I need your help
    52 replies, posted
How is that more tedious than using a completely unique programming language that only works on your site?
That's comparing apples to oranges. We were talking about the effort that needs to be spent to get the first result on the screen.
But at least that effort will give the learner real applicable experience, whereas learning your language that has no other use case really won't. Yeah it might teach them how to 'program' but it will only cause problems when they move on to a real, used language, especially where you made some really weird syntax choices.
For teaching purposes, no it doesn't. You link it on your site so it's usable there, the place where the teaching and code writing takes place. Provide an download as well so if the user wants to set up their own environment they can.
If it's being done on your site then the effort is identical though, isn't it? It'd only be off your site where the difference is all that noteworthy. A Javascript project would take some setting up (though it'd be really easy to setup a zipped template for users to download) but your unique language can only even be used on your site to begin with. Not using a unique programming language should actually make things significantly easier on your part too. You wouldn't have to worry about the language itself or making sure that it makes sense and is consistent with other languages so that the user could actually make use of those skills elsewhere. This is honestly probably the best option for you. Just include the library in the template download I mentioned above, with it properly included in the html for the template, and then you odn't really have to worry about the downsides so much. It'd result in skills that you can guarantee would be usable for the user while still accomplishing what you want with the tutorials.
There are some things that prevent from going the JS route: All of the weird quirks and gotchas that have to be explained - "this" reference, rather unusual "class" declaration, closures, equality checks Unless you add something like RequireJS in the mix everything has to be in one file. Good luck navigating around even a moderately complex project when everything is crammed into one single file. And, like I said before, I wanted to have a good code completion. By good I mean Java code completion in IntelliJ IDEA. IntelliJ provides code completion for JS as well, but it is not nearly as precise as in Java.
Ideally you'd be using es6 using babel, which fixes most problems people have with javascript.
ES6 is good, though to use babel you need to: Download and install Node Install babel through npm Launch the watcher-compiler Everything through a command line.
For learning purposes this is most likely enough: <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> <script type="text/babel"> // es6 code </script>
I think the problem is you'll have to eventually throw the user in the deep end, and starting them off with a non-standard language with some non-standard syntax is going to fuck with them once they move onto a real language. I really don't know why you're so adamant on using a bespoke language to introduce someone to programming. If you don't want to piss about with the quirks of a specific language just write an article, otherwise just use a standard language and throw the quirks at them because at the end of the day no language is perfect and they're going to come across the quirks.
That's really not that hard to do providing you have some knowledge of the command line, which you're going to want to learn anyway. Not to mention I recently discovered https://parceljs.org which you essentially install through npm, run the parcel command and it automatically: Runs a local web server Fetches any dependencies you need based on your project setup Watches and builds any files Installing NPM is 1 command if you have a package manager. then 1 command to install Parcel, then 1 command to run it, which does all the processes above.
Don't skip over Love2D! You can literally just drag and drop a script onto Love2D for it to run, it can also do some really advanced things with really basic programming. Love2D can actually hot-load scripts as well, or run scripts from within itself so it'd be pretty straight-forward to recreate what you've done already in it.
Guess who stared with Visual Basic 👈
This is a neat idea, it's worthwhile, just needs a bit of UI polish. You can tell a developer built this, we aren't picky about our interfaces, but this is for people who aren't developers YET, so it needs some design work.
Some developers are picky about interfaces, hence why someone might use VS Code over vim. The whole site has that feel to it where it makes perfect sense in the OP's head but to anyone else (including developers) it doesn't really make that much sense, and having to watch a video to explain clearly shows it's been designed wrong. I think the site is a good idea, but in terms of how it's interacted with it needs to be completely rethought. Keyboard navigation shouldn't be forced because some people who have been developers for over 10 years haven't "forgotten" about the mouse, and the pages need better explanation, especially the main index page which has no explanation at all.
I guess one thing requires clarification: In a regular editor you edit code in the form of text, then text is fed to parser and in the end you have an abstract syntax tree or AST, which is a structured representation of your code. Then the editor can compile the AST to a binary file or provide code completion or error checking. I've used a different approach called projectional editing, in which you deal with AST nodes directly. For instance, if you want to add a method call you don't type the text that represents the method call visually. Instead, you say "I want a method call here", it creates a template for method call and then you just fill the blanks. The major benefit of this technique is that since there is no text to begin with it is not possible to make a syntax mistake.
If your only purpose is to teach basic programming concepts (not actually programming anything) then i guess that'd be good enough if you redid the UI into something actually usable. Seems kind of useless though, maybe it'd be something for young kids? They already have similar teaching software though.
If this was true, you don't need a programming language.
Confusing? Maybe. But unusable? Come on. Have you actually tried it?
I generally agree with many of the issues that others have brought up. The UI does look a bit dated. I'm unsure of the benefit of using a programming language that you created. It seems easier to teach others using ruby or python (or some dynamic language) Someone brought up that if you taught using javascript, that you'd have to teach the language "gotchas". Well, if you want to know the javascript language, you're going to have to know things like 'this', OO javascript, closures, etc. I'd argue that you dont' really know javascript unless you know these concepts. Every language will have gotchas, thats the point of learning them. I think making your own language is technically challenging, but i dont see how it helps in this case. Why would someone want to use your service to learn programming as opposed to using codeacademy or execism.io?
If we ignore the language choice my feedback is : You need some introduction text in the table of contents. You need to be able to navigate back to the table of contents within a section. Previous/Next comment should be disabled if no previous/next comment are available. You should have a button to go to the next or previous section from a section. Why is the "practice" in another tab ? You don't want to user to start getting lost in too much tabs. Have a visible button to run the script instead of an obscure keyboard shortcut (you can add a title on it with the shortcut). You should be able to directly edit the code as text (seems like the only advantage of directly editing the AST is that you didn't have to write a parser). If you really don't want to let people edit the code directly then you should at least highlight the corresponding part of the AST on mouse hover. Then you should be able to click on it to edit it directly. People aren't going to learn only using the keyboard, they need to be able to discover things visually. What you see is what you should type. Why display a string like this "my_string" when you have to type it like this :my string. This is counter intuitive. I made a division by 0 and no errors were displayed Now if we go back on the language choice, as the other I don't think a custom language is a great idea. If it was close to some another main language, why not. But there everything seems to be different for the sake of being different : Why start global with * ? Why start string with : ? Why do I have to type "assign" to make an assignation ? You say that you should know at least two language to be a developer, which is right. But where would knowing your language be of any help ? To summary : great execution, looks solid but can still be polished. But the custom language is too exotic to be useful for somebody that would want to learn programming.
I begin to think that this whole idea might be a better fit for a mobile. Typing code is notoriously awkward with a tiny screen and touch interface. What do you think?
If think this could better fit mobile if you allow people to directly edit the AST by using gesture and merge the preview and lesson tabs. But the same questions still apply : Why learn your language instead of something more classic Will I be able to make a real world application using your language ? Why should I learn on a mobile platform when production level programming is done a computer. Why should I directly edit the AST instead of typing text ? This project seems like something fun and interesting, you should totally try it and keep working on it. But keep it mind that those questions will come back after.
Sorry, you need to Log In to post a reply to this thread.