Re: The Demise of C#
- From: "Juan T. Llibre" <nomailreplies@xxxxxxxxxxx>
- Date: Mon, 25 Apr 2005 10:54:13 -0400
Is there *any* way to make this thread demise ?
;-)
Juan T. Llibre
ASP.NET MVP
Foros de ASP.NET en Español
Ven, y hablemos de ASP.NET...
======================
"John" <John@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:E0192DFC-8661-4B40-878E-E02985E75D66@xxxxxxxxxxxxxxxx
> Hi Kevin,
>
> I'm sorry but that second part wasn't directed at you. I was in a hurry and
> crammed two messages into one after browsing through the boards - I apologize
> about the confusion. The second paragraph was in response to someone writing
> about how a .NET developer is more likely to understand object-oriented
> design and reusability than a C++ programmer. I would have to disagree, at
> least based on my experience. That said, I know plenty of C++ programmers who
> shouldn't be calling themselves as such - the kind of C++ programmer that
> thinks that templates are only useful for making collections of arbitrary
> types, for instance.
>
> As for the first part, syntactic differences aren't going to make or break a
> language, but between VB.NET and C#, that's among the most significant
> differences between the two. What I would like to see is a hybrid between the
> two languages.
>
> There are syntactical conveniences (like the string concatenation operator)
> in both languages would be nice to have at once. Global functions may not be
> suitable for a large-scale design, but the .NET languages are just as
> suitable for rapid application development where globally accessible
> functions can be quite suitable. Furthermore, a VB module provides the
> ability to declare state variables with private modifiers, and can be
> contained within a custom namespace, so as far as I'm concerned, a module is
> superior to a class with nothing but static functions, as the members of such
> a class cannot be brought into the global namespace.
>
> Operator overloading is another example. It seems like a shame that VB users
> must cope without the syntactic convenience simply because operator
> overloading isn't 'VB-esque'. Well, neither was inheritance and polymorphism.
> Polymorphism to a VB programmer prior to .NET was to use variants.
>
> Syntax and small features like the addition of modules is pretty much all
> there is to go by when judging the differences between .NET languages.
>
> - John
>
> "Kevin Spencer" wrote:
>
>> Hello John,
>>
>> I understand generics fine thank you. Generics have their place. But you
>> missed my point. And I'm not going to waste anyone's time debating it.
>>
>> And please point out to me where I called myself a C++ programmer. I am
>> simply a programmer. I can program in a half-dozen languages, one of which
>> is C++, although I tend to avoid it. C# is an excellent RAD language, and
>> when I need to go lower than C# I generally go to C. I can also program in
>> VB.Net, but tend to avoid it because of the requirements of many of my
>> applications, which require things not available in VB.Net, like pointers.
>>
>> No need to get personal, eh?
>>
>> --
>>
>> Kevin Spencer
>> Microsoft MVP
>> ..Net Developer
>> What You Seek Is What You Get.
>>
>>
>> "John" <John@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
>> news:EA0A8BA5-615C-4D7B-B8FA-4E6C0B920B32@xxxxxxxxxxxxxxxx
>> > I'm sorry Kevin,
>> >
>> > but Option Strict has no bearing on the string concatenation operator in
>> > VB,
>> > and the & operator has nothing to do with weak data typing. It is simply a
>> > syntactical convenience that has no implicit effects (it is explicitly
>> > stating that both operands are going to be converted to string as
>> > necessary),
>> > and the expression, '123 + 456' in C# is not the same as '123 & 456' in
>> > VB.
>> > While I agree with you for the most part about the demise of C#, I found
>> > it
>> > pretty odd that you do not understand this distinction.
>> >
>> > Any C++ programmer who has a poorer understanding of reusability and
>> > generic
>> > design than someone who started on VB or C# should not be calling
>> > themselves
>> > C++ programmers, for any moron who even half-understands the STL should
>> > know
>> > far more about design patterns than anyone who thinks that the .NET
>> > framework
>> > library classes are the epitome of object-oriented design.
>> >
>> > - John
>> >
>> > "Kevin Spencer" wrote:
>> >
>> >> > For instance, take the string concatenation operator from VB, &, which
>> >> > automatically converts the left and right operands to strings and
>> >> > returns
>> >> > a
>> >> > combined string. Why is there no equivalent in C#?
>> >>
>> >> +
>> >>
>> >> The "ToString() part is simply strong data typing. Try turning Option
>> >> Strict
>> >> ON for a change.
>> >>
>> >> --
>> >> *sigh*,
>> >>
>> >> Kevin Spencer
>> >> Microsoft MVP
>> >> ..Net Developer
>> >> What You Seek Is What You Get.
>> >>
>> >> "John" <John@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
>> >> news:DA9BC3C2-D058-46EF-A5BF-3AABD03AA6AC@xxxxxxxxxxxxxxxx
>> >> >I personally think there are some really great things in VB.NET and it's
>> >> >a
>> >> > real crime how C# doesn't implement them. If you ask me, VB.NET is a
>> >> > better
>> >> > language for the rapid-application development needs of most .NET
>> >> > developers.
>> >> > I still code in C# over VB most of the time, but there are many things
>> >> > I
>> >> > envy
>> >> > in VB that I find lacking in C#.
>> >> >
>> >> > For instance, take the string concatenation operator from VB, &, which
>> >> > automatically converts the left and right operands to strings and
>> >> > returns
>> >> > a
>> >> > combined string. Why is there no equivalent in C#? Sure the '&'
>> >> > character
>> >> > would conflict with the bitwise and, but there are plenty of other
>> >> > symbols
>> >> > (ex - Lua's '..') that could be used in place, and it's absolutely
>> >> > silly
>> >> > that
>> >> > someone has to write:
>> >> >
>> >> > some_string_output_function("Blah blah: " + x.ToString() + ", " +
>> >> > y.Totring() + " blah blah " + z.ToString + ", " q.ToString() );
>> >> >
>> >> > when they could have simply wrote something like:
>> >> >
>> >> > some_string_output_function("Blah blah: " .. x .. ", " .. y .. " blah
>> >> > blah
>> >> > "
>> >> > .. z .. ", " .. q);
>> >> >
>> >> > There's nothing implicit going on here; the operator has
>> >> > clearly-defined
>> >> > behavior. It makes little sense to me why C# does not have things like
>> >> > this
>> >> > that would do nothing but make the code a little more readable and
>> >> > convenient
>> >> > to write.
>> >> >
>> >> > I can understand many of the reasons for C#'s more explicit nature like
>> >> > requiring explicit casts (safety) and explicitly indicating where you
>> >> > want
>> >> > to
>> >> > use dynamic binding (performance), but it's silly to deprive a language
>> >> > of
>> >> > something useful just because it isn't characteristic of the language
>> >> > from
>> >> > which it was modeled.
>> >>
>> >>
>> >>
>>
>>
>>
.
- Follow-Ups:
- Re: The Demise of C#
- From: Kevin Spencer
- References:
- RE: The Demise of C#
- From: John
- Re: The Demise of C#
- From: Kevin Spencer
- Re: The Demise of C#
- From: John
- Re: The Demise of C#
- From: Kevin Spencer
- Re: The Demise of C#
- From: John
- Prev by Date: strange but true
- Next by Date: Web.Config Changes dont happen
- Previous by thread: Re: The Demise of C#
- Next by thread: Re: The Demise of C#
- Index(es):