Ruby and C

Would it be easier to learn ruby if i knew C/C+/C++ or the other way around?

···

--
fish can't fly but birds can
birds can't swim but fish can

I think it's a better way that konw more about OO

···

On 4/24/07, smc smc <fixxie.wits@gmail.com> wrote:

Would it be easier to learn ruby if i knew C/C+/C++ or the other way
around?

--
fish can't fly but birds can
birds can't swim but fish can

--
/***********************************/
    Lets go With the float....
/***********************************/

smc smc wrote:

Would it be easier to learn ruby if i knew C/C+/C++ or the other way
around?

It is easier to learn *programming* in Ruby than in C/C++. However, the
languages are different enough that if you *need* to know C/C++, I'd
focus on learning that, rather than learning Ruby first.

- --
M. Edward (Ed) Borasky, FBG, AB, PTA, PGS, MS, MNLP, NST, ACMC(P)
http://borasky-research.net/

If God had meant for carrots to be eaten cooked, He would have given
rabbits fire.

smc smc wrote:

Would it be easier to learn ruby if i knew C/C+/C++ or the other way around?

I'm biased since I learned C in 1985, but if you don't know C (or better, assembler) then you really don't know what your program is doing. The Ruby translator is written in C, the core libraries and many standard libraries are written in C, and many things in Ruby (printf, for example) are named after the well-known C equivalents.

There are those who can argue eloquently that you don't need to know what your program is doing at the C level and they're very persuasive. At this point I can't decide if they're right or wrong. All I know is that when I write Ruby code I frequently think about how such-and-such Ruby abstraction is *really* implemented in C.

In any case you can't go wrong learning C. Somebody said that C is so pervasive that it's "the atmosphere in which we live."

As others have mentioned, there are pluses and minuses to either
approach. Here is my take on either scenario:

1. C first, Ruby next: You learn the intricacies and then get spoiled
with the ease-of-use later and appreciate each language.
2. Ruby first, C next: Easy learning with forgivable syntax. When you
learn C, you'll find it "verbose" and strict.

···

On Apr 23, 5:27 pm, "smc smc" <fixxie.w...@gmail.com> wrote:

Would it be easier to learn ruby if i knew C/C+/C++ or the other way around?

One of the first things you'll learn is that C/C++ is an uneasy
pairing - despite C++ being based on, and backward-compatible with C
they're pretty different languages.

martin

···

On 4/24/07, smc smc <fixxie.wits@gmail.com> wrote:

Would it be easier to learn ruby if i knew C/C+/C++ or the other way around?

Are you looking to have fun, or to acquire marketable skills? If you're
tempted to say "both," you should probably think a little harder because the
answer differs.

If you want to have fun, learn C, then C++, then Ruby. Nothing is more fun
than understanding what you're doing at a deep level, and building on that
foundation to learn higher-level things. I learned assembler before I
learned C before I learned C++ (and have been a professional at all of them,
where "professional" is defined as "getting paid consistently for doing
it"). But before I ever approached computers, I learned how to design
digital logic at the hardware level (gates, circuits, voltage regulators,
all of it). Then when I first looked at assembly languages, they made
complete and intuitive sense from the first minute. Needless to say, my
reaction to C was "Wow, what a high-level language this is!" I never had
conceptual trouble with pointers because I know exactly what they mean at
the electronic level.

It's a different question if you're looking for marketable skills (although
taste plays a big role because you need to ask yourself what you will
actually enjoy working with every day).

It's been long predicted, but we may finally be starting to see a split
between hard-core systems programmers (for which the demand is really rather
low), script-level coders, and "business" analysts who probably won't ever
write a line of code at all. As the economics of software development
change, these layers may become more clearly delineated and less permeable
in the marketplace. I think Ruby has helped drive this change because it
really is becoming more possible to cut together significant and valuable
applications from system-level pieces using scripting. (Java tries to do
this at the library level, less successfully, although the terrific amount
of effort that goes into the attempt shows you that the principle at work is
a compelling one.)

So if you want to be in the middle layer (probably the mainstream going
forward), there's nothing wrong with learning Ruby first. You would do well
to learn Java too (though I'm hesitant to recommend that, not because of
inherent problems with Java but rather because most Java pedagogy is of the
mindless, cookbook variety.)

Flame away. I can anticipate objections to this argument in two basic forms:
1) "What you're talking about hasn't happened yet, therefore it won't happen
in the future," and 2) "Language XYZ is the best language in the world [for
some local definition of "best"] and therefore everyone should learn it
first!" I'll be very interested in hearing any counterarguments that are not
isomorphic to one of these.

···

On 4/23/07, smc smc <fixxie.wits@gmail.com> wrote:

Would it be easier to learn ruby if i knew C/C+/C++ or the other way
around?

get the book by Chris Pine, Learn to Program.
It's cheap and small and interesting. Mr. Pine uses it to teach beginning programming to kids. He chooses to teach them Ruby rather than other languages. Ruby gets out of the way most of the time. It lets you focus on the skill of creating a program. Designing it and testing and running it. In C this is a much more complicated task. If you starting out, C will throw a lot of things at you at once.
If you need to learn some programming concepts, Ruby is a great place to start.

But learning C is a good goal too. It really is the Latin of computer languages. Many ideas and traditions come out of decades of C culture.

That said, either way you'll be fine, but get yourself a good text editor which does colors and (if possible) auto completion. Learn to use the command line too. Buy a good reference book for Unix.

Don't quit Ruby though. It's different enough from C that one may make the other make sense in a way.
It doesn't hurt to learn C first, but it isn't necessary to master it.
You will indeed find that other languages do things the way you wish C did. C is really bare bones stuff. It's hard to feel productive and useful with it compared to interpreted languages like Ruby, Perl, Python or PHP.
Much terminology comes from C or before, and many fundamental concepts are well established in C books, but don't feel like you have to learn one language at a time. (more than 2 at a time would be difficult though)
Most of them have a lot in common, so many things will carry over.
Many languages even look and work a lot like C does, but Ruby certainly does have a particular beauty about it.
Learn both.
Many people do indeed use multiple languages. Certain languages are good at certain things.
Some concepts are better illustrated and easier to manage mentally with some languages.

John Joyce wrote:

get the book by Chris Pine, Learn to Program.

http://pine.fm/LearnToProgram/

To sneak a peak, you can find a complete tutorial (I don't have the book itself, and thus cannot comment on the completeness of the content in comparison to the book) to programming in general and Ruby especially.

Of course, _why's poignant guide shouldn't be amiss in Ruby specific tutorials.

It's cheap and small and interesting. Mr. Pine uses it to teach beginning programming to kids. He chooses to teach them Ruby rather than other languages. Ruby gets out of the way most of the time. It lets you focus on the skill of creating a program. Designing it and testing and running it. In C this is a much more complicated task. If you starting out, C will throw a lot of things at you at once.

I can recommend "C++ for Dummies" if you are new to C/C++. I haven't yet had the patience to learn C/C++, though, but found the book a valuable resource when I was dabbling in C/C++.
A tidbit of information: C has become a subset of C++, which, upon more, introduced OOP to the C world.

That said, either way you'll be fine, but get yourself a good text editor which does colors and (if possible) auto completion. Learn to use the command line too. Buy a good reference book for Unix.

Look long and hard for a good text editor / IDE (once you know what your IDE should be able to do). What works for me, doesn't work for you (I don't really like Eclipse, but I like NetBean's Ruby support, for example).

Get used to reading loads of documentation, most of which is dry and boring, but packed with information.

Don't just get a Unix book, but install yourself a Linux / Unix derivate (Ubuntu is a very good choice if you never, ever touched *nix). Darwin (Mac OS X's Unix core) is available as download, too.

···

--
Phillip "CynicalRyan" Gawlowski
http://cynicalryan.110mb.com/
http://clothred.rubyforge.org

Eek! That was supposed to be My Special Law, _MY_ special law, I tell
you!

T/

get the book by Chris Pine, Learn to Program.

Chris Pine's book, I must say, is rather great. He teaches you one things at a time, and explains everything thoroughly. You could learn a lot of Ruby from that book in two days. I did.

But learning C is a good goal too. It really is the Latin of computer languages. Many ideas and traditions come out of decades of C culture.

Anyone know much about D? It's an alternative to C, with cleaned up syntax and garbage collection. There are a lot of other features, too, but I don't know them. Check it out if you're even slightly interested.

That said, either way you'll be fine, but get yourself a good text editor which does colors and (if possible) auto completion.

For macs, Aquamacs is an amazing TE. It's free (not sure if it's open source), and has coloring (from the themes) and auto-tabbing (Ctrl-Alt-Backslash). By far my favorite text editor. There's also TextMate, but I haven't used it yet.

---------------------------------------------------------------|
~Ari
"I don't suffer from insanity. I enjoy every minute of it" --1337est man alive

···

On Apr 24, 2007, at 12:42 AM, John Joyce wrote:

http://pine.fm/LearnToProgram/

To sneak a peak, you can find a complete tutorial (I don't have the book itself, and thus cannot comment on the completeness of the content in comparison to the book) to programming in general and Ruby especially.

It's an intro. Doesn't go into bigger topics. Focus on fundamental things.

Of course, _why's poignant guide shouldn't be amiss in Ruby specific tutorials

Of Course!

I can recommend "C++ for Dummies" if you are new to C/C++. I haven't yet had the patience to learn C/C++, though, but found the book a valuable resource when I was dabbling in C/C++.
A tidbit of information: C has become a subset of C++, which, upon more, introduced OOP to the C world.

Actually, C and C++ are still very closely related, but have officially and technically branched off. C++ is no longer a superset of C
however, Objective-C is a superset of C. Meaning, all C is valid Objective-C. Not so with C and C++. (though we can say that most small C programs probably are valid C++ programs)

C is not bad to learn, just painful at times (debugging) it is still all around you, everywhere. That mobile phone in your pocket? C is in it. In most single-purpose devices. Systems engineers use it all the time. Ruby can be used to test and check C! Even to generate C.

···

On Apr 24, 2007, at 2:01 PM, Phillip Gawlowski wrote:

looks like im going to be trying to learn C...

···

On 4/23/07, John Joyce <dangerwillrobinsondanger@gmail.com> wrote:

On Apr 24, 2007, at 2:01 PM, Phillip Gawlowski wrote:
> Learn to Program, by Chris Pine
>
> To sneak a peak, you can find a complete tutorial (I don't have the
> book itself, and thus cannot comment on the completeness of the
> content in comparison to the book) to programming in general and
> Ruby especially.

It's an intro. Doesn't go into bigger topics. Focus on fundamental
things.

> Of course, _why's poignant guide shouldn't be amiss in Ruby
> specific tutorials

Of Course!

>
> I can recommend "C++ for Dummies" if you are new to C/C++. I
> haven't yet had the patience to learn C/C++, though, but found the
> book a valuable resource when I was dabbling in C/C++.
> A tidbit of information: C has become a subset of C++, which, upon
> more, introduced OOP to the C world.

Actually, C and C++ are still very closely related, but have
officially and technically branched off. C++ is no longer a superset
of C
however, Objective-C is a superset of C. Meaning, all C is valid
Objective-C. Not so with C and C++. (though we can say that most
small C programs probably are valid C++ programs)

C is not bad to learn, just painful at times (debugging) it is still
all around you, everywhere. That mobile phone in your pocket? C is in
it. In most single-purpose devices. Systems engineers use it all the
time. Ruby can be used to test and check C! Even to generate C.

--
fish can't fly but birds can
birds can't swim but fish can

Late in the conversation but...
I learned the canonical basics (Apple &Q) of childhood, then Pascal.
then C++, then C...
It really wasn't a good way to go.

You're right to learn C first. It teaches you many of the good habits
people used to proclaim were taught by Pascal, except unlike Pascal,
it's useful. Once you start coding in Ruby, you may not use your C
much, but it's one of those languages you should at least be able to
read. Being able to read C, and having at least written some C, is to
a programmer like being able to read a circuit diagrams and
greek-letter laden papers is to an engineer. You don't have to be an
expert in writing it if you're not programming in it, but you should
be able to read it and understand it.

Learning C++ before C is painful, and then it will take great work to
get your C skills up to snuff. Learning C++ for your OO stuff may be
painful as well.

Since you're planning on learning some C, maybe learn C, learn ruby,
then if you want to branch out to OO in C, learn C++ :slight_smile:
(obj C is a cool choice too, but not widely used outside of OSX)

···

On 4/24/07, smc smc <fixxie.wits@gmail.com> wrote:

looks like im going to be trying to learn C...