Massassi Forums Logo

This is the static archive of the Massassi Forums. The forums are closed indefinitely. Thanks for all the memories!

You can also download Super Old Archived Message Boards from when Massassi first started.

"View" counts are as of the day the forums were archived, and will no longer increase.

ForumsDiscussion Forum → Wookie06's Computing and Electronic Thread
123
Wookie06's Computing and Electronic Thread
2015-07-07, 3:56 PM #1
So I've had a variety of topics that I'd wanted to discuss with those of us still remaining here so I'm just going to use this thread for that purpose.

The first thing I'd like to bring up is retro-computing and kids. Growing up in the 80s I have a huge nostalgic connection with old computers and from time to time I find myself following various topics down the internet rabbit hole. What I would like is your opinion on is there any value to these old computers as a means to introducing my son (9 years old) to programming and basic principles and if not what would be the best way to do so?

When I was a kid I was getting very proficient with BASIC but never moved past that just due to other interests and circumstances. I want to encourage my son to be more than just a user and delve into actually creating things on a computer. How would you suggest I facilitate that keeping in mind that I don't really have the ability to teach that myself anymore?
"I would rather claim to be an uneducated man than be mal-educated and claim to be otherwise." - Wookie 03:16

2015-07-07, 4:03 PM #2
Minecraft? I haven't played it, but I'm guessing it is scriptable.

You could also get him to work on a TC mod for JK.
2015-07-07, 4:16 PM #3
I'd probably stick to Python or Javascript on a modern computer.
2015-07-07, 4:22 PM #4
Or, find a game he likes that supports Lua scripting.

I don't think Javascript is interesting enough to 9-year-olds.
2015-07-07, 4:33 PM #5
Wookie, you might not appreciate just how desensitized kids are these days. I have friends who practically put iPads in their children's cribs. You just can't get somebody interested in programming, unless said programming is there to amplify a gaming experience. Javascript aint as exciting as Angry Birds (or whatever the hell they're playing now.)

The desire to make new levels, skins, and hacks was the reason a lot of us came here in the first place. The promise of increasing the possibilities in an experience you are already engrossed in and obsessed with is going to be the surest way to capture the imagination.

Did you give your son Lego to play with as soon as he was old enough not to swallow it? Scripting games is the best way turn Big Kid toys like games into Lego.

Unfortunately, a lot of the games kids play these days aren't really built of out of coarse-grained objects that can be easily visualized in their entirety. The level of complexity and detail in a modern AAA game is overwhelming, and you can only hope to create content at the macro level, rather than crafting textures and surfaces from the ground up. Kind of sad, but that's why I suggested Minecraft. You should seriously check it out if you aren't already aware of it.
2015-07-07, 4:35 PM #6
He is very interested in Minecraft and this thread will later have some questions about a PC build but I decided to delay that as sometime within the foreseeable future I may be able to responsibly afford a better than budget build.

Yeah, putting nostalgia aside I really don't see a reason to delve into retro-computing. Is python and/or java approachable for the older less flexible mind? I still have interests in programming but recognize I am less able to learn multiple complicated things in concert. I am taking the summer off to decompress a bit but will continue with my studies soon so I don't want to have delusions when it comes to getting into programming myself.
"I would rather claim to be an uneducated man than be mal-educated and claim to be otherwise." - Wookie 03:16

2015-07-07, 4:35 PM #7
Javascript would let him make something that he can show his friends. Probably a safer bet than raising him to be a weirdo kid who spends most of his time playing a game more than double his age.
2015-07-07, 4:39 PM #8
Lisp
SnailIracing:n(500tpostshpereline)pants
-----------------------------@%
2015-07-07, 4:41 PM #9
I was totally not serious about telling him to edit JK.
2015-07-07, 4:41 PM #10
Buy him a Lisp Machine.
2015-07-07, 4:41 PM #11
Originally posted by Wookie06:
He is very interested in Minecraft and this thread will later have some questions about a PC build but I decided to delay that as sometime within the foreseeable future I may be able to responsibly afford a better than budget build.
(Buy budget build anyway, put rest in savings.)

Quote:
Yeah, putting nostalgia aside I really don't see a reason to delve into retro-computing. Is python and/or java approachable for the older less flexible mind? I still have interests in programming but recognize I am less able to learn multiple complicated things in concert. I am taking the summer off to decompress a bit but will continue with my studies soon so I don't want to have delusions when it comes to getting into programming myself.
Python and Javascript are fine. Java assumes a lot of existing knowledge and isn't a good beginner language. (You can mod minecraft, but you have to know java.)

For an adult I'd recommend MIT opencourseware, 6.00 is open and they use Python. From there you can jump over to pygame and make all of the graphics and bleep bloop, and it's easy to transfer to javascript once you know the basics of computation.
2015-07-07, 4:43 PM #12
install gentoo

(unless you don't want him to come out a neckbeard on the other side)
2015-07-07, 8:10 PM #13
Originally posted by Jon`C:
For an adult I'd recommend MIT opencourseware


Holy crap, there is a lot of content there. Thank you for this recommendation.
"I would rather claim to be an uneducated man than be mal-educated and claim to be otherwise." - Wookie 03:16

2015-07-07, 8:59 PM #14
Originally posted by ECHOMAN:
Lisp
I lol'd.
>>untie shoes
2015-07-07, 9:13 PM #15
Originally posted by Antony:
I lol'd.


It isn't the worst idea. Lisp is very easy to learn and start using, it's powerful and flexible. The main problem with Lisp is that it's not a procedural programming language. Reasoning procedurally is something that most people don't get a lot of exposure to, so it's good to learn and probably wise to start young.

Most 'normal' people gain enough exposure to Lisp like thinking through precalc and calc that functional and declarative languages are actually more approachable to them than the more commonplace kinds.
2015-07-07, 9:28 PM #16
Sure, it's old hat, but taking his suggestion seriously is also a possibility. Also, Lisp has had something of a renassaince in the last five years, and there are lots of new programs being written in Lisp.

You would definitely like Scheme (a variant of Lisp) if you came from and old-school programming background like Basic, since the language was created in a time when systems were expected to be self-contained. It has a magical and elegantly straightforward intrigue, but it only limited in complexity by your imagination.

MIT Open Courseware has a series of video lecutres based on the classic SICP book, given to HP employees by the authors.

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures/

You should watch these lectures with an open mind, with the book handy, and a Scheme REPL open. I like Chicken Scheme, but there are many Schemes out there (there are probably better ones for beginners).

The SICP book is licensed under Creative Commons license, so you can get it for free. Somebody even typeset the book as a PDF for easy reading.

You can also read the book within Emacs, since somebody converted the book to the Gnu Info format: https://github.com/webframp/sicp-info

You'll want to use Emacs eventually anyway if you are going to be using Scheme (or Lisp in general).

Warning: RMS is a leftist, ಠ_ಠ, who started GNU after getting burned by those who wanted to take the MIT lab commercial (see: Symbolics). Guess he was right, though, since commercial Lisp was killed by cheap workstations in the `90s, and all those man-hours went into an IP blackhole, leaving only GNU (however inferior) standing.

Wookie could try to (understand-scheme-from SICP), so that his kid could then (understand-scheme-from Wookie), or simply (understand-scheme-from (understand-scheme-from SICP))

If you get stuck just go on #lisp on freenode, or google around to look for StackExchange answers, etc.
2015-07-07, 10:00 PM #17
One word of warning, though: Lisp programmers are known to exhibit cult-like behavior.
2015-07-07, 10:36 PM #18
(p-language-good 'lisp) => nil
2015-07-07, 10:36 PM #19
seriously though, don't make a kid learn lisp.
2015-07-07, 10:52 PM #20
Prolog? :P

I was more suggesting that Wookie be the one to learn Lisp.
2015-07-07, 11:16 PM #21
Sure, wookie06 could learn lisp. Or prolog. Whatever, they're both cool. I just have a hard time seeing either of those languages being any good for a kidlet (specially once we've ruled out both javascript and python as too boring)
2015-07-07, 11:35 PM #22
Have you heard much about Racket, Jon? It seems to have been designed with education in mind. It's an offshoot of Scheme, but you don't have to use Scheme per se--instead you usually choose a specialized language, often paired with a tutorial / online book. Stuff like drawing shapes directly on the REPL in a line or two of code is super easy.

I couldn't get too much into it since it seemed too easy to feel like I was doing anything worthwhile, but it's probably something a kid could get a lot out of.
2015-07-07, 11:36 PM #23
I think you should seriously check this book out, Wookie:

http://www.amazon.com/Realm-Racket-Learn-Program-Game/dp/1593274912
https://www.nostarch.com/realmofracket

Apparently it's like SICP for kids, using Scheme instead of Racket, and with games instead of random examples from CS, math, and physics.

The Racket system takes the teacher out of the loop by automating a lot of the things that beginners get hung up on, so as an added bonus, Wookie wouldn't have to learn the language first just to teach it.
2015-07-07, 11:39 PM #24
Prolog is really cool if you're into using computers to solve real daily problems. Especially once you slap on a CP library. Anything like picking classes for school without conflicts, scheduling employees at a store, figuring out the order of cities you should visit on a (very short!) tour. The only disadvantage is that Prolog is pretty slow; depending on model you could end up visiting most of a decision tree before it converges on a solution.
2015-07-07, 11:40 PM #25
Originally posted by Reverend Jones:
Have you heard much about Racket, Jon? It seems to have been designed with education in mind. It's an offshoot of Scheme, but you don't have to use Scheme per se--instead you usually choose a specialized language, often paired with a tutorial / online book. Stuff like drawing shapes directly on the REPL in a line or two of code is super easy.

I couldn't get too much into it since it seemed too easy to feel like I was doing anything worthwhile, but it's probably something a kid could get a lot out of.


what does racket offer that clojure doesn't?

serious question, because people use clojure to do actual work, and selling a PL as being 'for education' puts it in a very meh camp
2015-07-07, 11:42 PM #26
There's also the game Braid, which seems to be based on using backtracking as a fundamental new game mechanic. I haven't played, but the concept looks sweet.
2015-07-07, 11:47 PM #27
Originally posted by Jon`C:
what does racket offer that clojure doesn't?

serious question, because people use clojure to do actual work, and selling a PL as being 'for education' puts it in a very meh camp


As far as I can tell, people use Racket for two things:

  1. As a tool for testing new semantics in programming languages (seems exclusively academia)
  2. As a platform for teaching programming to the widest audience possible, integrating teaching materials, exploiting the ease with which Racket can implement different DSLs (see #1) that integrate into the IDE, easing the teaching process.
2015-07-07, 11:48 PM #28
I would never use Racket for anything other than those two things. (Which means that I don't use it.)
2015-07-08, 12:08 AM #29
Racket isn't special for that. Lisp has always been very good at implementing DSLs and alternative semantics. Lisp was originally intended to have a more sophisticated grammar using so called M-expressions, which the language would internally translate into S-expressions. There wouldn't be (and ultimately isn't) anything stopping you from defining yet another alternative syntax.
2015-07-08, 12:21 AM #30
I think the difference with Racket is that they are trying to create an environment where you don't actually have to actually know Lisp to benefit from it.

In fact, this distinction lies at the core of a schism between followers of SICP and the competing book, "How to Design Programs", written by some core Racket developers.

Essentially, the Racket side believe that SICP is too difficult for most beginners. Here's their rationale for DrScheme (now called Racket) in the preface of HtDP:

Quote:
People often tell us that they wish to learn how to program and then they ask which programing language they should learn (first). Given the press that some programming languages get, this question is not surprising. But it is also inappropriate.

As the preceding sections explain, learning to program well is primarily about studying principles of design. The ideal programming language must support these principles and its implementation must explain all the mistakes novices make in terms that they understand. Our research shows that no off-the-shelf industrial language satisfies the second constraint. Their creators expect that the programmers immediately know the entire language because they have professional programmers in mind who roughly understand the fundamental concepts of languages.

Our solution is to use our own, incredibly small, teaching language, dubbed *SL in this preface. The language is the language function definitions, function applications, and nested, potentially conditional expressions. In essence, it is the foreign language that students in pre-algebra courses acquire. The difference is that our language comes with many more kinds of data than algebra—in addition to numbers, its basic data includes images and words. The language also comes with a number of pre-defined functions that make working in “pre-algebra” fun and entertaining; the very first program is a small animation.

When it comes to programming environments, we face an equally bad choice. A programming environment for professionals is the rough analogue of the cockpit of a jumbo jet. It has numerous controls and displays, overwhelming anyone who first launches such a software application. Novice programmers need the equivalent of a two-seat, single-engine propeller aircraft with which they can practice basic skills. We have therefore created DrRacket, a programming environment for novice programmers.

DrRacket consists of two simple panes: a Definitions area, where you define functions, and an Interactions area, where you interact with them. Even when there is nothing in the Definitions area, you can immediately experiment with expressions in the Interactions area. Thus, experimenting starts with pocket-calculator arithmetic, and it proceeds from there to calculations with images, words, lists, and other forms of data. This way, learning is closely supported by a highly playful, feedback-oriented support system.

An interactive evaluator simplifies the programming language and the learning process. Concretely, DrRacket has two advantages over conventional programming environments. First, it enables novice programmers to manipulate data directly. Hence the language does not need facilities for reading input and writing output, and novices don’t need to spend valuable time on figuring out how these work. Second, the arrangement strictly separates data and data manipulation from input and output of information. Nowadays this separation is considered so fundamental to the construction of software that it has its own name: called model-view-controller architecture. In short, working in DrRacket ensures that you pick up fundamental software engineering ideas in a natural way.
2015-07-08, 12:27 AM #31
Originally posted by Jon`C:
Racket isn't special for that. Lisp has always been very good at implementing DSLs and alternative semantics. Lisp was originally intended to have a more sophisticated grammar using so called M-expressions, which the language would internally translate into S-expressions. There wouldn't be (and ultimately isn't) anything stopping you from defining yet another alternative syntax.


https://en.wikipedia.org/wiki/Racket_%28programming_language%29#Macros_and_extensibility
2015-07-08, 7:43 PM #32
Look up computercraft for minecraft. In it, you can create programs on little computers using LUA. We experimented with it a bit at the college I work at, for a learning day for kids, using minecraft. You can also look up the raspberry pi Kano Kit, which has an OS with programs geared towards teaching kids how to program.
I can't wait for the day schools get the money they need, and the military has to hold bake sales to afford bombs.
2015-07-08, 9:18 PM #33
Originally posted by Wookie06:
So I've had a variety of topics that I'd wanted to discuss with those of us still remaining here so I'm just going to use this thread for that purpose.

The first thing I'd like to bring up is retro-computing and kids. Growing up in the 80s I have a huge nostalgic connection with old computers and from time to time I find myself following various topics down the internet rabbit hole. What I would like is your opinion on is there any value to these old computers as a means to introducing my son (9 years old) to programming and basic principles and if not what would be the best way to do so?

When I was a kid I was getting very proficient with BASIC but never moved past that just due to other interests and circumstances. I want to encourage my son to be more than just a user and delve into actually creating things on a computer. How would you suggest I facilitate that keeping in mind that I don't really have the ability to teach that myself anymore?


I'd advise against BASIC if you don't also include a C like language. You should probably look into those tutorials that tell you how to make simple games (tic tac toe, frogger, text adventures which is probably where you should start) and rewrite them in such a way that you introduce the kid into the needed concepts in a fun and constructive way.
Nothing to see here, move along.
2015-07-08, 9:43 PM #34
Calling all the Basic programmers... calling all the Basic programmers--there's a new announcement.

You're Basic!

Sorry, don't know how to play this video :(
https://www.youtube.com/watch?v=dKY0FsUEMyw

Basic, C, Forth, who cares. Honestly, this might say more about me (or the book I chose) than anything else, but 10-year-old me found the book "C++ for Dummies" to be the most pointlessly uninteresting and baroque way to discover programming. I had way more fun with MS QBasic for MS DOS. And I can only imagine how much more fun I would have had were I born long enough ago to have been peeking and poking a C64.
2015-07-08, 9:45 PM #35
Originally posted by Admiral Zarn:
Look up computercraft for minecraft. In it, you can create programs on little computers using LUA. We experimented with it a bit at the college I work at, for a learning day for kids, using minecraft. You can also look up the raspberry pi Kano Kit, which has an OS with programs geared towards teaching kids how to program.


I would listen to this man.
2015-07-08, 9:53 PM #36
Originally posted by SF_GoldG_01:
I'd advise against BASIC if you don't also include a C like language.
Please explain.
2015-07-09, 1:53 AM #37
I'd also like to add, if you do go the route of the Computercraft and/or Kano Kit, the languages I would recommending going for afterwards would be Visual Basic > C++ > Java... or, at least, it's the path I recommend to students at my college, and they have an easier of a time than any other way.

The learning programs on the Kano OS include games that teach logical structuring of a program language and other basics such as that, and learning Python for scripting in minecraft and creating simple games. Each time they complete a task, they "level up," which pretty much turns the process of learning into kind of a game. Not to mention, once they "move on" to more serious things, since the system is all based on Raspberry Pi 2, new OSes can be used.

Computercraft, as I said, they would be able to create computers that run LUA programs in minecraft. We used this in conjunction with a special version of minecraft called MinecraftEDU, which the kids loved, as well as the Kano. But Computercraft can be obtained for regular minecraft, or in a pack called Tekkit. These can be used to make puzzles or other creative activities that mix gaming and education.

These would really give a good foundation for later languages, like the Visual Basic, C++ and Java. And keep in mind that most modern languages have a lot of similarities, so switching languages wouldn't be that too terrible of an ordeal.

Link to Kano
http://www.amazon.com/Kano-1000C-02-Computer-Kit/dp/B00WRGTVWI/ref=sr_1_1?ie=UTF8&qid=1436428071&sr=8-1&keywords=kano+kit&pebp=1436428089918&perid=0GZ1JTHJ1J9KWZ5FVFDR
I can't wait for the day schools get the money they need, and the military has to hold bake sales to afford bombs.
2015-07-09, 4:56 AM #38
What do you find is the benefit of VB (presumably .NET) over jumping right into Java or C#?
2015-07-09, 9:25 AM #39
Jon, from my standpoint as a current student, I thought VB was a fairly decent intro to basic software principles. As you know, it's extremely literal, and I feel like that helped me out a lot when it came to understanding the basics. It may be contrary and irritating at times, and occasionally forces you to accomplish things in incredibly stupid ****ing ways, but I feel like it holds your hand enough for you to get the gist fairly easily.

fwiw, the progression is supposed to be: Java, VB, OOP (which we also use java), etc... I was forced to do this out of order (as a result of a scheduling snafu), and even thought GBK had to save my ass a few times in VB by explaining **** that an ape should be able to understand in retrospect, I didn't have nearly the problems that everyone else did in Java. tbh, I thought Java was an absolute breeze.
>>untie shoes
2015-07-09, 9:58 AM #40
Originally posted by Jon`C:
Please explain.


Presumably he wants his kid to gain skills, while having fun, that will some day be useful in the job market. It seems BASIC will still be around for some time, and it is not inconceivable that people will still need BASIC programmers in order to maintain older systems, BUT, I started programming in Blitz Basic and found that while it was a step in the correct direction, it also set me back many years. There are a lot of languages that are similar to C++, which is why I think it is essential to learn so that you can easily pick up other languages. I know programmers who have only programmed in BASIC for decades and are struggling to get into anything else.

A common complaint I hear from older BASIC programmers is the use of brackets is unintuitive (I disagree). This is why I suggest using C++ or maybe even C# so that his kid can gain essential concepts on how code is structured (that are similar to other languages) and maybe even learn a little bit of OOP, which also stumbles BASIC programmers (I am referring to non VB.net BASIC programmers).

I don't use VB.net so I can't really have an opinion on it, but I assume it is more OOP oriented than other BASIC variations.

In essence, help your kid learn things that carry over into other things.

EDIT: before you mention it, yes it is also important to teach fundamental concepts on how a program works, how to use loops, logic, etc. But those concepts are better taught using examples in a programming language that are share similarities with others.
Nothing to see here, move along.
123

↑ Up to the top!