<div dir="ltr"><div><div>I&#39;ve noticed that tech books are not fun unless I have something specific I need to do.<br><br></div>So to have fun reading about how to use ruby, you need a reason to use ruby.<br><br></div><div>
The nice thing about ruby is that it is pretty good for most high-level software tasks.  You would be hard pressed to write a device driver for the Linux kernel in ruby, but most of the time people aren&#39;t writing kernel stuff, so ruby&#39;s great.  You just need to find some problem you have that software can solve.<br>
<br></div><div>With that specific problem in hand, you&#39;ll be motivated to retain the stuff you learn about ruby.<br><br></div><div>At least that&#39;s how my own brain works: I need some specific project to hook my new knowledge onto.<br>
<br></div><div>Oh---About garbage collection---That&#39;s really a cultural thing.  There is nothing technical preventing a C programmer from using the good old Boehm garbage collection library or any other great garbage collection technologies.  It&#39;s just that if you get hired by a team of C programmers, they have probably already settled on an anti-garbage-collection bias.<br>
<br>  <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/">http://www.hpl.hp.com/personal/Hans_Boehm/gc/</a><br><br></div><div>Personally, I&#39;m liking garbage collection lately, even though I&#39;m pretty good at getting by without it.<br>
<br>I was listening to a series of lectures by Richard Hamming lately.  He pointed out that human beings aren&#39;t very good at repetitive tasks, and you&#39;re better off writing software to take care of tedium instead of doing it manually.  I think I&#39;ve seen enough memory-allocation-and-freeing bugs to convince me that humans are not very good at programming garbage collection manually, so I think it&#39;s OK for software to do it.<br>
<br>  <a href="https://www.youtube.com/watch?v=2e5_Z6oZ0rM">https://www.youtube.com/watch?v=2e5_Z6oZ0rM</a><br><br></div><div>One observation is that even in a context like Go, where you have garbage collection in the runtime, you can avoid GC by simply maintaining free lists and stuff.  That is, you still have a choice when the programming environment provides GC to optimize away from it, assuming you find some good reason not to let it do its thing.<br>
<br></div><div>They figured out how to make garbage collection take work pretty efficiently, though, in the late 70s and early 1980&#39;s, though.  Because it&#39;s a cultural thing, I doubt it&#39;s possible to do a real experiment: People who dislike software-automated garbage collection won&#39;t want to use it, and people who like it will not be interested in doing it manually.<br>
<br></div><div>  Baker 1978: List Processing in Real Time on a Serial Computer<br></div><div>  <a href="http://dl.acm.org/citation.cfm?id=359470">http://dl.acm.org/citation.cfm?id=359470</a><br><br></div><div>  Lieberman 1983: A Real-Time Garbage Collector Based on the Lifetimes of Objects<br>
</div><div>  <a href="http://dl.acm.org/citation.cfm?id=358147">http://dl.acm.org/citation.cfm?id=358147</a><br><br></div><div>(If anybody knows other seminal papers on high-performance garbage collection, please share.  It turns out it&#39;s relevant to stuff like distributed file systems.)<br>
</div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Mar 25, 2013 at 10:39 AM, Ron Frazier (ALE) <span dir="ltr">&lt;<a href="mailto:atllinuxenthinfo@techstarship.com" target="_blank">atllinuxenthinfo@techstarship.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br>
<br>
As some of you know who&#39;ve been following my prior threads, I&#39;ve had a long time interest in learning a modern programming language.  I&#39;ve had difficulty putting the proper time into the studies, but I&#39;m always genuinely interested in the information I learn here.  Leam had convinced me that GO was a great language, and I believe it is.  I was going to tackle that, but I have misgivings about its lack of popularity in the market place.<br>

<br>
According to:<br>
<br>
<a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html" target="_blank">http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html</a><br>
<br>
GO ranks between 51 and 100 in usage, and the percentage is so low it&#39;s not listed.  So, like it or not, learning GO might be a skill few people want.  I decided to defer that.<br>
<br>
Most recently, I decided to learn the specific language of the MetaTrader currency trading platform so I can build a tradebot.  I am working on that slowly.  Unless I get really good, it is unlikely someone will hire me for that.  The objective would be for the tradebot to make money using my own account.<br>

<br>
So, I still have an interest in learning a general programming language.<br>
<br>
I&#39;m interested in a modern garbage collected language, preferably multi paradigm, with safe I/O and system calls, that can be compiled, and that doesn&#39;t care about white space.<br>
<br>
See this comparison:<br>
<br>
<a href="http://en.wikipedia.org/wiki/Comparison_of_programming_languages" target="_blank">http://en.wikipedia.org/wiki/Comparison_of_programming_languages</a><br>
<br>
I&#39;ve chosen Ruby as my project language.<br>
<br>
According to the link posted above, the top 10 languages, and some of the reasons I&#39;ve rejected some of them, are as follows.  No offense is intended to anyone that programs in these languages.<br>
<br>
01) Java - security problems<br>
<br>
02) C - not modern garbage collected<br>
<br>
03) Objective C - Apple centric primarily<br>
<br>
04) C++ - not modern garbage collected<br>
<br>
05) C# - MS centric primarily<br>
<br>
------------<br>
<br>
06) PHP - security problems<br>
per<br>
<a href="http://en.wikipedia.org/wiki/Php" target="_blank">http://en.wikipedia.org/wiki/Php</a><br>
&quot;About 30% of all vulnerabilities listed on the National Vulnerability Database are linked to PHP.&quot;<br>
<br>
07) VB - MS centric<br>
<br>
08) Python - cares about white space<br>
<br>
09) Ruby - This is my choice.<br>
<br>
10) Perl - does not have safe I/O and system calls<br>
per<br>
<a href="http://en.wikipedia.org/wiki/Comparison_of_programming_languages" target="_blank">http://en.wikipedia.org/wiki/Comparison_of_programming_languages</a><br>
<br>
-------------<br>
<br>
So, having said all that, I have some Ruby questions.<br>
<br>
A) I have the &quot;PickAxe&quot; book on Ruby 1.9 by Dave Thomas.  Is that a good resource for learning, or do I need to upgrade to a Ruby 2.0 book now that version 2 is out?<br>
<br>
B) Does anyone have any experience compiling Ruby either through Rubinius or JRuby or otherwise?<br>
<br>
See <a href="http://patshaughnessy.net/2012/2/15/is-ruby-interpreted-or-compiled" target="_blank">http://patshaughnessy.net/2012/2/15/is-ruby-interpreted-or-compiled</a><br>
<br>
Finally, I&#39;ve observed that reading one of these programming books is about as much fun as reading the US tax code.  You get a thousand little examples of things like using for next loops to do a factorial.  Now that&#39;s exciting.  I&#39;ve seen maybe 1 of 100 books, primarily from Deitel and Deitel or the Head First series, that make learning programming fun.  They present you with real world applications, simplified, that are interesting.  They let you get something you can interact with on the screen quickly and work on learning how it works and tweaking it.  For example, a simulator of an ATM machine.  An actual working realistic program.<br>

<br>
C) So, does ANYONE know of a Ruby book that would make learning the language FUN, or at least moderately interesting?<br>
<br>
As always, any help is appreciated.<br>
<br>
Sincerely,<br>
<br>
Ron<br>
<br>
<br>
<br>
--<br>
<br>
Sent from my Android Acer A500 tablet with bluetooth keyboard and K-9 Mail.<br>
Please excuse my potential brevity if I&#39;m typing on the touch screen.<br>
<br>
(PS - If you email me and don&#39;t get a quick response, you might want to<br>
call on the phone.  I get about 300 emails per day from alternate energy<br>
mailing lists and such.  I don&#39;t always see new email messages very quickly.)<br>
<br>
Ron Frazier<br>
<a href="tel:770-205-9422" value="+17702059422">770-205-9422</a> (O)   Leave a message.<br>
linuxdude AT <a href="http://techstarship.com" target="_blank">techstarship.com</a><br>
<br>
<br>
_______________________________________________<br>
Ale mailing list<br>
<a href="mailto:Ale@ale.org">Ale@ale.org</a><br>
<a href="http://mail.ale.org/mailman/listinfo/ale" target="_blank">http://mail.ale.org/mailman/listinfo/ale</a><br>
See JOBS, ANNOUNCE and SCHOOLS lists at<br>
<a href="http://mail.ale.org/mailman/listinfo" target="_blank">http://mail.ale.org/mailman/listinfo</a><br>
</blockquote></div><br><br clear="all"><br>-- <br>  Ed Cashin &lt;<a href="mailto:ecashin@noserose.net">ecashin@noserose.net</a>&gt;<br>  <a href="http://noserose.net/e/">http://noserose.net/e/</a><br>  <a href="http://www.coraid.com/">http://www.coraid.com/</a>
</div>