Well, having to explicitly convert between strings and integers in most
cases is a concious design decision. I do still forget about it sometimes
but luckily, the exceptions make the error easy to find.
but in ruby you only have the + operator, so in principle the result of
"200" + 1
and
200 + "1"
could be either 201 or 2001. And I'd sort of expect both cases to give
the same result. In any case, this stuff can lead to really confusing
results.
Personally, I think the way Perl handles this sort of thing is easier
for straight forward text manipulation, BUT since Perl depends on the
operator to determine the type of conversion the number of operators
is fairly large, and it becomes seriously unwieldy if you introduce
more types than simple strings and numbers. See for example the perl
table of operators for perl 6 (still under development): http://www.ozonehouse.com/mark/blog/code/PeriodicTable.html
Joost.
···
On Fri, May 12, 2006 at 11:27:29AM +0900, corey konrad wrote:
how about this cin>> = num, lol i dont know ruby seems like a trade off
to me so far. i am just trying to understand all this hype about it. I
mean every book i am reading says its the best most awesome easiest to
use, just like using natural language, its elegant and beautiful and it
will make you cry because its so easy to use, etc etc. I am having a
hard time understanding that. If its true i would like to see it at some
point.
you're trying to add a string and an integer. it's like writing:
3 + " dogs"
you should write
3.to_s + " dogs"
···
On May 12, 2006, at 4:05 PM, corey konrad wrote:
It printed out "5" just fine. Is that the problem you were referring to?
actually this one, i have to use + full_name.to_s + to avoid the error i
just found that strange. i mean i am using a string method the to_s
should be implicit shouldnt it? i dont know.
irb(main):030:0> def name_length
irb(main):031:1> p "what is your first name?"
irb(main):032:1> first = gets.chomp
irb(main):033:1> p "what is your last name?"
irb(main):034:1> last = gets.chomp
irb(main):035:1> full_length = first.length + last.length
irb(main):036:1> p "your full name has: " + full_length + "characters"
irb(main):037:1> end
=> nil
irb(main):038:0> name_length
"what is your first name?"
corey
"what is your last name?"
konrad
TypeError: can't convert Fixnum into String
from (irb):36:in `+'
from (irb):36:in `name_length'
from (irb):38
from :0
The #{} evaluates everything inside it and then turns the result into
a string. It's meant just for this sort of thing.
···
On 5/12/06, corey konrad <0011@hush.com> wrote:
> It printed out "5" just fine. Is that the problem you were referring to?
>
actually this one, i have to use + full_name.to_s + to avoid the error i
just found that strange. i mean i am using a string method the to_s
should be implicit shouldnt it? i dont know.
str + number -> gives you an error, before puts even get's around to seeing anything
I would suggest almost _always_ using interpolation. It will give you what you expect, pretty much everytime. To rewrite what you have above with string interpolation:
p "your full name has: #{name_length} characters"
···
On May 12, 2006, at 7:05 PM, corey konrad wrote:
It printed out "5" just fine. Is that the problem you were referring to?
actually this one, i have to use + full_name.to_s + to avoid the error i
just found that strange. i mean i am using a string method the to_s
should be implicit shouldnt it? i dont know.
irb(main):030:0> def name_length
irb(main):031:1> p "what is your first name?"
irb(main):032:1> first = gets.chomp
irb(main):033:1> p "what is your last name?"
irb(main):034:1> last = gets.chomp
irb(main):035:1> full_length = first.length + last.length
irb(main):036:1> p "your full name has: " + full_length + "characters"
irb(main):037:1> end
=> nil
irb(main):038:0> name_length
"what is your first name?"
corey
"what is your last name?"
konrad
TypeError: can't convert Fixnum into String
from (irb):36:in `+'
from (irb):36:in `name_length'
from (irb):38
from :0
The goal of ruby is to make programming easier and more enjoyable right?
So isnt it important that a language with that as its goal can express
simple programs in a simple and intuitive way? I am a begining
programmer and i find ruby counter intuitive so far and that worries me
and makes me wonder if i am wasting my time with. I want to learn how to
write software. Thats the bigger picture i am in right now. Its not
personal, I am just trying to get my feet wet here and make sense of
all this stuff.
···
Yes, I am too currently looking for a language worthy of my "what is
your favorite number" program. I guess ruby is just 260,000 lines of
hype.
def favorite_number
print "what is your favorite number? "
puts "#{gets().to_i + 1} is better"
end
I agree completely. Java is much better for the my favorite number program:
% cat favorite_number.java
import java.io.*;
class FavoriteNumber {
public static void main(String args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String num;
System.out.print("What's your favorite number? ");
num = in.readLine( );
String better_num = (new Integer(Integer.parseInt(num) + 1)).toString();
System.out.println(better_num + " is better.");
}
}
See?
And it's so intuitive!
···
On May 11, 2006, at 10:43 PM, Daniel Harple wrote:
On May 12, 2006, at 4:27 AM, corey konrad wrote:
how about this cin>> = num, lol i dont know ruby seems like a trade off
to me so far. i am just trying to understand all this hype about it. I
mean every book i am reading says its the best most awesome easiest to
use, just like using natural language, its elegant and beautiful and it
will make you cry because its so easy to use, etc etc. I am having a
hard time understanding that. If its true i would like to see it at some
point.
Yes, I am too currently looking for a language worthy of my "what is your favorite number" program. I guess ruby is just 260,000 lines of hype.
def favorite_number
print "what is your favorite number? "
puts "#{gets().to_i + 1} is better"
end
oh ok thanks i guess i should read this entire book on the laguage first
before getting snooty and thinking i have everything all figured out,
lol. I tend to do things like that all the time.
Thanks.
Bira wrote:
···
On 5/12/06, corey konrad <0011@hush.com> wrote:
> It printed out "5" just fine. Is that the problem you were referring to?
>
actually this one, i have to use + full_name.to_s + to avoid the error i
just found that strange. i mean i am using a string method the to_s
should be implicit shouldnt it? i dont know.
Try this:
p "Your full name has #{full_length} characters."
The #{} evaluates everything inside it and then turns the result into
a string. It's meant just for this sort of thing.
i dont know there is always someone who takes something personal in
these chat forums, more so with perl than ruby i just dont understand
the romantic zealotry surrounding computer programming languages i
guess.
···
Yes, I am too currently looking for a language worthy of my "what is
your favorite number" program. I guess ruby is just 260,000 lines of
hype.
def favorite_number
print "what is your favorite number? "
puts "#{gets().to_i + 1} is better"
end
Matz (Ruby's creator) >
No language can be perfect for everyone. I tried to make Ruby perfect
for me, but maybe it's not perfect for you. The perfect language for
Guido van Rossum is probably Python. http://www.artima.com/intv/rubyP.html
···
On 5/11/06, corey konrad <0011@hush.com> wrote:
The goal of ruby is to make programming easier and more enjoyable right?
Ruby wasn't necessarily written to make programming easier and more
enjoyable. It many ways it depends on who is using it. For those of us
coming from programming in languages like Java (look at the example
from Logan, ouch) it is quite refreshing. I'm not sure what your
history in programming is, but if you are new to programming or have
programmed in something much different than Ruby, I'm sure it can be
confusing at first.
Also keep in mind that programming can get very frustrating at times.
I'm sure just about every programmer reading this can remember a time
when they were pounding their keyboards and about to throw their
monitor out the window because of some stupid problem. But when that
problem is solved, or a complicated algorithm works perfectly, it is a
really great feeling. Plus it is nice to have such power of the
computer to make it do anything you want, instead of being a slave to
it and other people's programs.
The truth is, Ruby may not be right for you. That is fine. There is no
good reason for you to program in something that doesn't fit you
(well, unless you get paid a lot to do it
The goal of ruby is to make programming easier and more enjoyable right?
So isnt it important that a language with that as its goal can express
simple programs in a simple and intuitive way? I am a begining
programmer and i find ruby counter intuitive so far and that worries me
and makes me wonder if i am wasting my time with. I want to learn how to
write software. Thats the bigger picture i am in right now. Its not
personal, I am just trying to get my feet wet here and make sense of
all this stuff.
The goal of ruby is to make programming easier and more enjoyable right?
So isnt it important that a language with that as its goal can express
simple programs in a simple and intuitive way? I am a begining
programmer and i find ruby counter intuitive so far and that worries me
and makes me wonder if i am wasting my time with. I want to learn how to
write software. Thats the bigger picture i am in right now. Its not
personal, I am just trying to get my feet wet here and make sense of
all this stuff.
Might it be fair to say that it's actually programming that you're
having difficulty with rather than Ruby at this stage? Chris Pine's
tutorial (which I assume you're using) isn't trying to show you how
awesome Ruby is, it's showing you how to program.
There are probably languages that are simpler for a beginner programmer
(probably QBasic if you can get your hands on it), but Chris Pine's
tutorial focusses on basic concepts a few at a time to get you up to
speed. That means leaving out a bunch of what makes Ruby cool. And once
you have mastered the material in Learning to Program, you will already
be far more productive in Ruby than you'd be after similar time on Basic.
Nothing's stopping you from learning more than one language so you can
choose between them and compare them more accurately. Indeed, hardly any
of us ruby-talkers use _only_ Ruby, and I doubt there's anyone who would
recommend it. But you might want to save your judgment at least until
you are a programmer.
What's probably going here is that you just aren't aware of the general suckiness of most programming languages. I have yet to see one that I think is perfect for me or completely intuitive for anybody; Ruby is my favorite though. Really, try doing this stuff in C, Java, Perl, Python, Lisp, BASIC, PHP, whatever.... Some are easier to pick up on than others, but they are all extremely difficult to start with for a complete beginner to programming in general. Just keep at it (with almost any popular language) and you will get there. For the record, I think that, despite your difficulties, Ruby is probably one of the easiest languages for you and most beginners to start programming with.
- Jake McArthur
···
On May 11, 2006, at 10:16 PM, corey konrad wrote:
isnt it important that a language with that as its goal can express
simple programs in a simple and intuitive way? I am a begining
programmer and i find ruby counter intuitive so far and that worries me
and makes me wonder if i am wasting my time with.
Yes, I am too currently looking for a language worthy of my "what is
your favorite number" program. I guess ruby is just 260,000 lines of
hype.
def favorite_number
print "what is your favorite number? "
puts "#{gets().to_i + 1} is better"
end
The goal of ruby is to make programming easier and more enjoyable right?
So isnt it important that a language with that as its goal can express
simple programs in a simple and intuitive way?
Intuitive to matz, yes.
I am a begining programmer and i find ruby counter intuitive so far and that worries me and makes me wonder if i am wasting my time with. I want to learn how to write software. Thats the bigger picture i am in right now. Its not personal, I am just trying to get my feet wet here and make sense of all this stuff.
You should think more about what you want and then go looking for the appropriate documentation. You should also experiment with irb.
Try:
ri Kernel#print
ri Kernel#puts
ri Kernel#gets
ri String#to_i
···
On May 11, 2006, at 8:16 PM, corey konrad wrote:
--
Eric Hodel - drbrain@segment7.net - http://blog.segment7.net
This implementation is HODEL-HASH-9600 compliant
Yeah that is the kind of example i was looking for thanks for that kick
in the ass. Thats what i need to get me excited about ruby. Java
definatly looks more complicated.
···
I agree completely. Java is much better for the my favorite number
program:
% cat favorite_number.java
import java.io.*;
class FavoriteNumber {
public static void main(String args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader
(System.in));
String num;
System.out.print("What's your favorite number? ");
num = in.readLine( );
String better_num = (new Integer(Integer.parseInt(num) +
1)).toString();
System.out.println(better_num + " is better.");
}
}
Noooo. If you are a new programmer learn lisp and smalltalk first. If
somehow you decide that neither one of them are to your liking then
learn python.
Noooo. If you are a new programmer learn lisp and smalltalk first. If
somehow you decide that neither one of them are to your liking then
learn python.
On Fri, 2006-05-12 at 13:39 +0900, Tim Uckun wrote:
Noooo. If you are a new programmer learn lisp and smalltalk first. If
somehow you decide that neither one of them are to your liking then
learn python.