Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ruby-the-VM vs. Ruby-the-Language #17

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

yaauie
Copy link
Contributor

@yaauie yaauie commented Oct 2, 2013

I'm especially open to feedback on this patch.

Separating the concepts of the world-you-create and the
language-you-use-to-create-it is the one thing that actually made things
click for me, and opened the doors for me to dive in deeper and really
understand what I was doing instead of copying and pasting from forums.

(cc: @eliseworthy, relevant discussion in #6)

Introduce the Ruby VM and the Ruby Language as two separate but
closely-related concepts. I think this helps combat the "everything in Ruby
is an object except lulz I tricked you these things aren't objects" we had
going on. While I think this is a necessary distinction to make, I'm not
sure I went into enough depth describing each Ruby program as a little universe
consisting only of the concepts introduced in the code it includes. Ruby, of
course, isn't the only way you can interact with the Ruby VM -- yay C-ext in
MRI and Rubinius, & native Java-code in JRuby -- but it is the language built
around the concepts that the Ruby VM provides.

@RobinClowers
Copy link
Contributor

This is great material, but I wonder how useful the distinction will be to beginners? I would suggest we wait until one of the more advanced ruby sections before introducing these details.

@yaauie
Copy link
Contributor Author

yaauie commented Oct 2, 2013

@RobinClowers yeah, I get that. Maybe it can be introduced in a shallower way? Or maybe with a tighter analogy? Like how a book in the english language can cause the reader to create a new world in their mind? It sure is hard to put on the newbie hat when you're no longer a newbie, but I could've saved months if I really got object-oriened as a concept from the get-go.

Lots of questions, I'm really open to ideas on how to add clarity and reduce noise.

@nanoxd
Copy link
Contributor

nanoxd commented Oct 3, 2013

@yaauie I agree, it is very difficult to see things from a layman's perspective. I think that adding the extra explanation does not hurt. The language in which you present it is basic enough to be understood 🐒; People who are detail-oriented will greatly benefit from this while those who like to see the big picture will be unaffected.

@RobinClowers
Copy link
Contributor

I would love to hear some other opinions on this, I think people with no programming background won't really grasp the distinction. I think after they have some more foundation, this kind of material would be great.

@nanoxd
Copy link
Contributor

nanoxd commented Oct 3, 2013

@RobinClowers I had my sister read the article before I wrote my comment. She has no background whatsoever in computers and is a Junior in high school. The only issue she had was with understanding what Product.new did (she didn't know what the word instantiate meant).

@AaronCRobinson
Copy link

Maybe drop that comment, "You'll learn more about instantiating objects later."? This will make more sense when talking about building objects. At first, all you need to know is you have an instance of the class which you can manipulate.

@yaauie
Copy link
Contributor Author

yaauie commented Oct 3, 2013

The github diff view for prose is rather intimidating and hard to follow, so I've generated a clean diff as a gist that should be a lot easier to read.

The diff was generated against the word-wrap commit & copied to my clipboard with:

╭ < yaauie@beorn ~/src/ada/curriculum (ruby-the-vm-versus-ruby-the-language=) >
╰ $ git diff 28f7683 -U10000 | pbcopy

@kerrizor
Copy link
Contributor

kerrizor commented Oct 5, 2013

Great stuff. I'm down with explaining objects by teaching people about Platonic Forms.

I am 100% ok with saying "ok remember when I told you everything was an object LOL J/K!" Science does that every year in school. Often we have to layer on foundations without nuance, as much as it irks our desire to be precise and give the student Truth.. Truth often requires conditionals and ambiguities through abstractions, having to continually ask "oh wait, is this that one time when Axiom is in fact not true?"

Anyways, I like what I read in the clean gist, but I assume its a little over their heads at the proposed point it comes in the curriculum. Thoughts?

Introduce the Ruby VM and the Ruby Language as two separate but
closely-related concepts. I think this helps combat the "everything in Ruby
is an object except lulz I tricked you these things aren't objects" we had
going on. While I think this is a necessary distinction to make, I'm not
sure I went into enough depth describing each Ruby program as a little universe
consisting only of the concepts introduced in the code it includes. Ruby, of
course, isn't the only way you can interact with the Ruby VM -- yay C-ext in
MRI and Rubinius, & native Java-code in JRuby -- but it is the language *built*
around the concepts that the Ruby VM provides.
@RobinClowers
Copy link
Contributor

Let's resurrect this thread. @kerrizor it sounds like we are mostly on the same page; this is great material, but should come later in the curriculum. Seems like someone needs to make a call about which direction to go with this...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants