you can't get in trouble with your boss for picking C#

P

Phlip

Rubies:

Here's a nice advocacy anecdote. A colleague vents, "So they hired him to
write the GUI, and he insisted on using C# because he claimed it would be
portable. So after he wrote a ton of cruft and we got rid of him, I tried to
build Mono for Linux, and there were no RPMs, so I know how to build source
right? The dependency chain was a mile long, and I spent almost two weeks at
it..."

That's like 20 or 30 engineering hours down the drain, folks...

Me: "Jeeze this stuff is obvious; that's why I always get permission before
picking a language."

Colleague: "Of course!"

Me: "Except Ruby." [He knows I maintain portability by actually porting as I
go...]

Colleague: "Natch."

Don'tcha just love backing the winning horse that everyone else thinks is
going to lose? The Java & .NET sectors of the industry are in a pitiful
condition, and the bosses who grew up with C++ just keep asking for more...
 
F

Florian Groß

Phlip said:
Don'tcha just love backing the winning horse that everyone else thinks is
going to lose? The Java & .NET sectors of the industry are in a pitiful
condition, and the bosses who grew up with C++ just keep asking for more...

C# is heavily taking ideas from Ruby right now -- which is no surprise,
really.
 
J

John

C# is The Devil, capital "T" capital "D," plain and simple. There is
nothing to set C# apart from Java, except for the impossibly huge .NET
framework for developing a billion different kinds of applications.
While I have to use it for various projects at work, I can say that
I've never enjoyed any of those except for the console applications
which felt just like writing simple Java apps. Of course, any business
that is a self-proclaimed "Microsoft Shop" (read: "ignorant of anything
else") is going to perpetuate these situations. I'm trying hard, but
most of the systems at my place of employment are Windows-based, and
sneaking Ruby in is a real trick. I've gotten more done with Ruby on
my own desktop, though, than anything else.
 
F

Florian Groß

John said:
There is nothing to set C# apart from Java, except for the impossibly
huge .NET framework for developing a billion different kinds of
applications.

Please, have a look at
http://taubz.for.net/blog?entry=htt...-6956298/dd7d1bf8-3fcd-4a3a-8fba-d4dca0c5da12

How can a language where you can write this be as bad as Java?

var old_numbers = new [] {1, 2, 3, 4};
// And yes, I still don't like arrows. :/
var new_numbers = old_numbers.map(number => { number * 2 });

True, this is not possible just yet, but C# 2 already introduced
features like yield return and delegate(int x) { return x * 2; } that
are a huge step away from the simple mindedness of Java.

I think C# is becoming a sensible language. It's still statically typed,
of course, but it is improving heavily.
 
R

Rob .

------=_Part_27501_22435348.1126798322580
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

As long as I can put food on the table without having to code C# I will. I=
=20
want to avoid supporting the M$ monopoly in any way, shape or form.=20
Particularly since they helped the Chinese government censor people bloggin=
g=20
in China:
http://www.wired.com/news/20050620_chinablogs.html
For me technical considerations related to C# don't even enter the debate.=
=20
[ok, end of rant] ;)
Rob

On 9/15/05 said:
=20
John wrote:
=20
There is nothing to set C# apart from Java, except for the impossibly
huge .NET framework for developing a billion different kinds of
applications.
=20
Please, have a look at
=20
http://taubz.for.net/blog?entry=3Dhttp://taubz.for.net/blog/blog-6956298/= dd7d1bf8-3fcd-4a3a-8fba-d4dca0c5da12
=20
How can a language where you can write this be as bad as Java?
=20
var old_numbers =3D new [] {1, 2, 3, 4};
// And yes, I still don't like arrows. :/
var new_numbers =3D old_numbers.map(number =3D> { number * 2 });
=20
True, this is not possible just yet, but C# 2 already introduced
features like yield return and delegate(int x) { return x * 2; } that
are a huge step away from the simple mindedness of Java.
=20
I think C# is becoming a sensible language. It's still statically typed,
of course, but it is improving heavily.

------=_Part_27501_22435348.1126798322580--
 
K

klancaster1957

C# certainly borrowed (aka stole) from java, which in turn was a
response to perceived weaknesses in C/C++. Ruby has roots in Smalltalk,
Perl, and C. Even Fortran is object oriented now! The corss-pollination
is normal, and just helps us as developers.

If you are willing to be tied to a single platform, I don't think there
is anything intrinscally wrong with C#. Its a reasonalbe language, and
as you say, its growing. I can't think of any reason why I would
develop a Windows application in Java - in a pure Windows environment,
..NET beats it hands down. Ruby is great - but I'm not likely to create
a thick client in TCL/TK. (I'm keeping issues about whether I LIKE M$
out of it - just looking at things from a pure productivity
standpoint).

The very thing that makes .NET unpallatable to some is what makes it
compelling to others - it has a giant company behind it that can throw
developers at it at will, so it is not going away. My gut feel is that
Ruby / Rails is at a critical point where it may have enough momentum
to be a real competitor, but it will still face resistance just because
there is not (to my knowledege...) a corporate entity that is actively
promoting and supporting it.

All that said, Ruby is the first language I've come across in a very
long time that actually gets me excited about programming. As somebody
said (maybe Dave Thomas?), it just feels right. In particular, Rails is
incredible from a productivity standpoint, but is it truly enterprise
ready? I think so, but it may be a hard sell.

Keith
 
P

Phlip

klancaster1957 said:
If you are willing to be tied to a single platform, I don't think there
is anything intrinscally wrong with C#. Its a reasonalbe language, and
as you say, its growing. I can't think of any reason why I would
develop a Windows application in Java - in a pure Windows environment,
.NET beats it hands down. Ruby is great - but I'm not likely to create
a thick client in TCL/TK. (I'm keeping issues about whether I LIKE M$
out of it - just looking at things from a pure productivity
standpoint).

That's the thing. To compete against a crappy language backed by Daddy
Warbucks, you need a language with a _much_better_ technical design. Only
that bedrock can support you.

Daddy Warbucks starts with languages invented by committees, and throws
programmers at them to cover over their bad spots.

Static typing is _wrong_, and the right alternative is linguistic support
for _optional_ typing. This requires committees capable of _letting_go_ of
the _illusion_of_control_, and publishing a language that might let someone,
somewhere, get in trouble with their boss for emitting a "message not
understood" error.

Ruby's technical excellence permits much simpler libraries, simpler killer
apps, and more elegant end-user-programmer code. When the pressure is on,
those things matter.
C# is heavily taking ideas from Ruby right now -- which is no surprise,
really.

Then when you retrofit a language design feature, instead of building it in
from scratch, you can't use it to simplify everything. Even its syntax will
suck.

Block closures provide an order of magnitude simpler designs. So unless you
add them to a language first, you fill your legacy libraries up with cruft.
Then when you retrofit them, they need more difficult syntaxes to compete.
All that said, Ruby is the first language I've come across in a very
long time that actually gets me excited about programming.

There's nothing to be ashamed of there. As engineers we have the
_obligation_ to our customers to seek these sweet spots, and exploit them.
"Excited about programming" is a _technical_ achievement, and it's a lot
more valuable than millions of square meters of print advertisement space in
Dr Dobbs Journal...
 
F

Florian Groß

Phlip said:
Then when you retrofit a language design feature, instead of building it in
from scratch, you can't use it to simplify everything. Even its syntax will
suck.

Block closures provide an order of magnitude simpler designs. So unless you
add them to a language first, you fill your legacy libraries up with cruft.
Then when you retrofit them, they need more difficult syntaxes to compete.

C# has always had anonymous functions, but only recently they have added
a nice syntax and closures to it. This means that it is fully compatible
with the existing standard library.

True, C# isn't as nice as Ruby, but I like to see Ruby inspire other
languages.
 
K

Kirk Haines

said (maybe Dave Thomas?), it just feels right. In particular, Rails is
incredible from a productivity standpoint, but is it truly enterprise
ready? I think so, but it may be a hard sell.

What is "enterprise ready"? My perception of the answer depends on who is
doing the selling, and what they are selling.

You ask a Sun customer solutions engineer, or someone from Microsoft in the
same role, and they are going to say that nothing written in Ruby is
enterprise ready.

However, if you ask people (like myself) who make a living from Ruby software
being used by businesses, we're going to say that it is.

What I am selling is different from what Microsoft is selling, so our answers
diverge considerably.

Many things in the Ruby universe are enterprise ready, at least for some
enterprises.


Kirk Haines
 
J

Josh Charles

Static typing is _wrong_, and the right alternative is linguistic support
for _optional_ typing.=20

Try building an operating system without static typing. The point is
that you use the right tool for the job. C# is a great language, and
the future is looking especially bright for it. With the Mono
project, and a few other, .NET is a great platform to use as well.=20
You can really do some neat things with it.

=20
Then when you retrofit a language design feature, instead of building it = in
from scratch, you can't use it to simplify everything. Even its syntax wi= ll
suck.

Has every feature that is currently a part of Ruby been a part of Ruby
from the start? I doubt it. C#'s syntax is great for what it is used
for.
=20
You should use the best tool for the job. If the situation is one
where you are using several different languages, or any of the several
other advantages of using the .NET platform, use .NET / C#. If the
situation is different, and you're implementing a micro-kernel, use C.
If you're creating a web application, use Ruby with the Rails
Framework.

There is not now, nor will there ever be a 'one-size-fits-all'
language. It's that simple. You can't implement Ruby in Ruby, you
have to use C. That's never going to change.
 
T

Trans

Florian said:
John said:
There is nothing to set C# apart from Java, except for the impossibly
huge .NET framework for developing a billion different kinds of
applications.

Please, have a look at
http://taubz.for.net/blog?entry=htt...-6956298/dd7d1bf8-3fcd-4a3a-8fba-d4dca0c5da12

How can a language where you can write this be as bad as Java?

var old_numbers = new [] {1, 2, 3, 4};
// And yes, I still don't like arrows. :/
var new_numbers = old_numbers.map(number => { number * 2 });

True, this is not possible just yet, but C# 2 already introduced
features like yield return and delegate(int x) { return x * 2; } that
are a huge step away from the simple mindedness of Java.

Had to do it.

require 'blankslate'

class Delegate < BlankSlate
def initialize( obj, &yld )
@obj = obj
@yld = yld
end
def method_missing( sym, *args, &blk )
if @yld
@yld[ @obj ].__send__( sym, *args, &blk )
else
@obj.__send__( sym, *args, &blk )
end
end
end

module Kernel
def delegate( obj, &yld )
Delegate.new( obj, &yld )
end
end

if $0 == __FILE__

i1 = 1
i2 = delegate( i1 ) { |x| x*2 }

p i2
puts i2

end
 
F

Florian Groß

Josh said:
You can't implement Ruby in Ruby, you have to use C. That's never
going to change.

Heh, I agree with your posting except for that last claim. Writing a
Ruby compiler in Ruby ought to be reasonably simple -- the run time is
the critical part, because you want it to be fast, and Ruby is slow
unless you can speed it up, but it certainly is possible as well.
 
F

Florian Groß

Trans said:
True, this is not possible just yet, but C# 2 already introduced
features like yield return and delegate(int x) { return x * 2; } that
are a huge step away from the simple mindedness of Java.

Had to do it.

require 'blankslate'

class Delegate < BlankSlate
def initialize( obj, &yld )
@obj = obj
@yld = yld
end
def method_missing( sym, *args, &blk )
if @yld
@yld[ @obj ].__send__( sym, *args, &blk )
else
@obj.__send__( sym, *args, &blk )
end
end
end

Careful! C# delegates don't actually delegate messages. Instead they are
the closest thing to Ruby's blocks the language has right now. Not sure
why they named them that way, but it's probably related to the
implementation.
 
J

Joe Van Dyk

There is not now, nor will there ever be a 'one-size-fits-all'
language. It's that simple. You can't implement Ruby in Ruby, you
have to use C. That's never going to change.

From an upcoming Rubyconf talk:

Reimplementing Ruby
Eric Hodel

MetaRuby is a reimplementation of ruby in ruby itself, involving a
rewrite of ruby's core libraries, parser, interpreter and garbage
collector. Metaruby will use the ruby2c translator in order to
bootstrap a new ruby binary. As Squeak Smalltalk has helped
demonstrate, I believe this will make ruby easier to develop and
maintain because developers will not need to work in both C and Ruby
when working on Ruby itself.

I will describe the process of porting ruby from C to ruby, lessons
learned during porting, our processes for maintaining consistency
between matz's ruby and MetaRuby (using and enhancing rubicon),
benefits this project will have for the ruby community, related
projects, and how we're using them.

Then I will grovel for contributors.
 
J

Josh Charles

From an upcoming Rubyconf talk:
=20
Reimplementing Ruby
Eric Hodel
=20
MetaRuby is a reimplementation of ruby in ruby itself, involving a
rewrite of ruby's core libraries, parser, interpreter and garbage
collector. Metaruby will use the ruby2c translator in order to
bootstrap a new ruby binary. As Squeak Smalltalk has helped
demonstrate, I believe this will make ruby easier to develop and
maintain because developers will not need to work in both C and Ruby
when working on Ruby itself.
=20
I will describe the process of porting ruby from C to ruby, lessons
learned during porting, our processes for maintaining consistency
between matz's ruby and MetaRuby (using and enhancing rubicon),
benefits this project will have for the ruby community, related
projects, and how we're using them.
=20
Then I will grovel for contributors.

Very interesting. But you'll still need C ;) I'm interested to know
how this will effect performance, thoug.
 
T

Trans

Florian said:
Trans said:
True, this is not possible just yet, but C# 2 already introduced
features like yield return and delegate(int x) { return x * 2; } that
are a huge step away from the simple mindedness of Java.

Had to do it.

require 'blankslate'

class Delegate < BlankSlate
def initialize( obj, &yld )
@obj = obj
@yld = yld
end
def method_missing( sym, *args, &blk )
if @yld
@yld[ @obj ].__send__( sym, *args, &blk )
else
@obj.__send__( sym, *args, &blk )
end
end
end

Careful! C# delegates don't actually delegate messages. Instead they are
the closest thing to Ruby's blocks the language has right now. Not sure
why they named them that way, but it's probably related to the
implementation.

Oh, is that all? Where've they been these last years? ;-)

T.
 
P

Phlip

Trans said:
Oh, is that all? Where've they been these last years? ;-)

When Daddy Warbucks tells his minions to promote Language X, and if it
sucks, then the majority of those minions must tread water frantically just
to write the simplest libraries and packages for X. The language's poor
quality slows down all the minions. Daddy Warbucks doesn't mind, because he
always has more minions to throw at the problem.

Then all the other companies that suck-up to that company will offload the
labor of supporting X, for free, further diluting the effects of X's poor
quality.
 
L

Lyndon Samson

------=_Part_25033_28533768.1126833094716
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Languages dont suck, they differ in degrees of suitability for a purpose.

Some languages have a wider range of tasks they are generally suitable for=
=20
than others.

If it wasn't for people building on top of 'sucky' languages we wouldn't be=
=20
in the sweet position we are now.

For example boo, http://boo.codehaus.org/ is a very nice language for the=
=20
dotnet platform, written in ( I'm guess C# ).

"If I have seen further it is by standing on ye shoulders of Giants."=20
--Isaac Newton

------=_Part_25033_28533768.1126833094716--
 
L

Lothar Scholz

Hello Josh,


JC> Very interesting. But you'll still need C ;) I'm interested to know
JC> how this will effect performance, thoug.

No, you need C to implement a virtual machine, but not for the
language parser/bytecode compiler/runtime.

But i'm still convinced that ruby in ruby will got give us any real
benefits.
 

Members online

No members online now.

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,043
Latest member
CannalabsCBDReview

Latest Threads

Top