Show HN: Programming Is Easier Than Most People Think
easylang.onlineI've taught code to children for years as the founder of a coding nonprofit, and this is a great way of laying out logic. Block code is very often taught to children and is a pet peeve of mine as it doesn't translate into strongly typed code for them, so we lose a number of kids in the shuffle when they believe code is too hard. Thank you for sharing!
If you were wanting to build on this, one of the greatest struggles, particularly with children, is syntax and spelling errors. They very often misspell words like "background" when we're teaching web dev, or forget their brackets and semicolons, so their code doesn't run.
If you were to make something similar but in a language they're already learning, such as Javascript, Java or Python (which, in my opinion, are the most common languages taught to kiddos), that might be useful.
Happy to chat more about this if you're looking for more on this perspective.
> doesn't translate into strongly typed code for them, so we lose a number of kids .. when they believe code is too hard
I can't make sense out of this; what does it mean, in different words?
Maybe a help window where you can select commands like "background" would be helpful.
> When programming, you tell the computer with a special code what to do.
I'd suggest changing that to something like "with a special sequence of commands".
While one can refer to computer programs as "code", it doesn't work to refer to them as "a code" -- when people read that they'll think of a short sequence of letters or numbers, and it will be confusing.
Thanks for the suggestion - my native language is not English.
Reminds me of a comment I made a while back reflecting on past teaching experience. Programming is easy to teach, provided you have a fairly friendly context to teach under. Teaching programming in the context of p5js and by making a bunch of simple visual / interactive "toys" is easy.
It gets complicated when you have to build websites and apps to actually solve some kind of business / consumer need, and I would argue it isn't even the programming aspect that makes it complicated. Rather, it's the fact that the thing you're building is built atop a layer of dependencies that you don't really know anything about, who in turn have their own layer of dependencies. To use these dependencies effectively, you need to know about some of the concepts embodied within them, such as a render lifecycle if we're talking about some kind of frontend js framework, knowledge that isn't precisely "programming knowledge".
And I as I mentioned before, this is why I think I'm not too worried about LLMs getting good at programming.
Teaching in those "hard" contexts doesn't seem more difficult than mentoring/managing multiple junior engineers, possibly of several skill levels.
Actually, teaching tabula rasa students might well be easier than teaching people to un-learn whatever made them successful with their first languages or frameworks. We all have lots to unlearn before we figure out what we should learn.
Easier than most people think ... to get started, but there are relatively few masters compared to the number of practitioners.
Thinking is harder than most people program.
Solving a problem is a complex process that has a small amount of programming even if it is a programming problem.
Programming is communication with both a computer and a person. Have fun!
The struggle with teaching children programming is very real. I think a major issue is that we're often too quick to jump into abstract concepts without laying a strong foundation in the basics. In my experience, kids (and adults alike) need to see the concrete, step-by-step process of how a program works before we can start abstracting away. The "what's going on under the hood" questions always come when the program is broken and you need to debug.
Just don't confuse it with engineering.
Software Engineering = Programming + People + Time
I love programming. I can do leetcode problems. But I was never that great with the people part. I wasn’t very successful in a software (development) engineer role. I enjoy programming as more of a solo activity. I think this was more common in the past, but the world has changed, and it seems like you really need the social component these days to be a successful software engineer.
There was a time when Software Engineering was the application of a branch of Mathematics called Computer Science.
That feels like a good definition of 'Programming' today? Implementing CS concepts through various levels of machine code generation.
I don't think so. I think Computer Science is the theory of computation, and the analysis of algorithms, and even the design of languages. And I think Software Engineering is the efficient[1] production[2] of larger-scale programs that adequately meet the need. It's a different discipline, though it's related.
You could think of it as being like Chemistry and Chemical Engineering. Chemistry worries about the properties of atoms, and how those atoms affect the properties of molecules. They worry about where the outer shell electrons go.
Chemical Engineering worries about "how do we make this stuff in multi-ton quantities without blowing up downtown". They worry about cost of raw materials, and disposal of waste products. They worry about pipe bursting strength.
In the same way, Software Engineering needs to worry about some things that Computer Science doesn't. (Maintainability is the big one that first comes to mind, though there are probably others.)
[1] Or "somewhat less inefficient" production, but the sentence was long enough already.
[2] And maintenance.
Yes, the engineering part is where the applied science meets business. It's not just a "better" job title.
I'm not sure the bulk of programmers are implementing CS concepts, except perhaps in a tautological sense. I think the Haskell sphere gives one a sense of what developing applications would look like if programmers really were implementing CS concepts.
There was a time when Computer Science was what is Numerical Analysis today.
I think there was no such time , not least because numerical analysis today leans on computer science to an extreme degree. I also think the two had very different development trajectories with some overlap (like much of maths).
What I'd like to know is what people think about the notion that programming is inherently about logic and problem-solving, but then there's the reality that most programmers spend a significant amount of their time on boilerplate code, debugging and dealing with the consequences of poorly designed software.
It is, all programming is easy once you know the syntax. Loop is a loop, and a conditional is a conditional.
The hard part nowadays is setting up the environment. There's so much meta to a language now its scary.
Then everything is thrown in your face and don't explain the fundamentals.
Imagine a bucket, with blue paint. Lets store this information of paint assigned to a variable of "paint_bucket".
Most guides are: "this is a variable, lets define it as blue".. assuming you know what a variable is. Sure it's not hard to follow and understand but for those like me, I need to know.
I like the use of 1000 colors, with the digits being RGB. I know there's 12/15/24 bit color schemes already (for example), but having it human-readable as 0-9 digits is handy IMHO.
If you need more colors, you can use "color3 r g b", where the values range from 0 to 1.
Sure. Then you ask a simple question. Is point A to the left or the right of the line defined by points C and D and then you find out that your code gives different answers depending on how you ask the question then you find out about floating point robustness with regards to geometric problems then you wish you had stuck to studying high energy physics.
Writing a book is easier than most people think.
Letters make words make sentences make paragraphs make chapters make a book.
Programming and problem solving is generally much easier than system installation and configuration. This is why so many novices can build amazing contraptions in Excel.
Haven't professors universally observed over the years that a flat 50% of people "just can't code"?
That study got retracted. The professor responsible explained he was on medication that put him into a manic state and impaired his judgement.
https://retractionwatch.com/2014/07/18/the-camel-doesnt-have...
This is awesome, thanks for sharing!
I appreciate inventing a simple language to teach programming and this looks like a good introduction.
But at first glance, this looks SO similar to Python - just teach them to use some parentheses and colons and you'll be learning programming AND learning a very useful language.
Python is very powerful and can therefore be quite complicated and has some pitfalls for beginners.
> print "Hello " & n$
I don't like this. It looks like nothing I've ever seen. It will make transition to real languages difficult.
In the beginning the concepts of variables and merging can be more powerful than a language.
Once upon a time I think Basic was such used as a decent beginner language to quickly outgrow.
My dad taught me to program using BASIC back in the early 1990s. I copied code from the "More BASIC Computer Games" book and saw how the programs were put together.
Aren't you just reinventing Logo?
See, for instance, https://www.transum.org/software/Logo/
Not Logo - but BASIC.
> You need a browser with WebAssembly support for this website.
No thanks.
First JavaScript, now WebAssembly - the world keeps on moving.
What's your objection and solution?
May you'd prefer a native app that can more easily own your machine?
My objection is that I don't want websites running arbitrary code on my machine. My solution is for sites to stop requiring that for them to function.
I realize that's not realistic, but I can still choose to live in my bubble, however unpleasant that may be.
For objections, WASM fingerprinting techniques come to mind. Not that one can escape it nowadays.