gwtmp01 wrote:
> When I was first learning Ruby, symbols were a bit of a mystery.
> I understand them now, and in hindsight, I don't really understand
> why they were so confusing.  In teaching other people about Ruby and
> in reading ruby-talk it is quite clear that symbols are an early
> stumbling block for learning Ruby.  I'd take an educated guess that
> people learning Rails (or any other Ruby framework) struggle with
> trying to understand if symbols are a magic feature of the framework
> or the language or something else.
> 
> My question to the list is, why?  What is it about Symbols that
> creates such confusion?  I'm getting ready to prepare a two-hour
> "Intro to Ruby" seminar and I'd like to find an approach to Symbols
> that cuts through the confusion.

The most common confusion I have seen is the mistaken understanding
that Symbols are variables (or references to variables) instead of
values; things like :x = 'foo' and  x = 'bar'; quux = :x.

Secondly, there is the occasional issue of confusing them with
pointers, probably because of their use to access methods and
such.

Once the other hurdles are cleared, the difference between Strings
and Symbols is a bit hazy.


> One thought that I've had is that Ruby's reflection capabilities
> expose the names of various internal structures (classes, methods,
> modules, constants) in a way that is quite foreign to many programmers.
> For example, in C you don't have any runtime access to the symbol table
> so you would never see a value that could be mapped to a function like
> 'printf', 'scanf', or 'main' unless the programmer took the trouble to
> construct an explicit symbol table (mapping strings to function
> pointers,
> for example).  An explicit table isn't much of a mystery.
> 
> When you switch to a language like Ruby, Smalltalk, and certainly the
> entire family of Lisp languages you are now in an environment where the
> data structures of the language runtime are exposed to the programmer.
> For a while, the novice will struggle because their mental model of
> a runtime environment just doesn't match their new reality and symbols
> just happen to be the bridge between the two worlds.  One of the first
> features of Ruby that many people learn are the 'attr*' methods.  Right
> off the bat, the novice is exposed to the mappings from strings to
> symbols to methods.
> 
> Do folks coming from the Lisp/Scheme world have trouble with symbols or
> do they absorb symbols right away because they already struggled with
> the concept when learning about atoms?
> 
> Thoughts?
> 
> Gary Wright

E

-- 
Posted via http://www.ruby-forum.com/.