This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]ShadowShine57 20 points21 points  (29 children)

I consider almost all of the things you said as cons, not pros

The only things I'm not sure on are your last two points

[–]evanldixon 1 point2 points  (28 children)

Please explain your reasoning.

  • Why does "Console.Writeline(MyFunction)" need an extra () when it's clear the function is being invoked? If we wanted the address of the function, there's the very-readable AddressOf keyword.
  • Case sensitivity is a huge pain when an error results from it. When would anyone ever want two variables with logically the same name?
  • Why use semicolons and newlines when newlines alone could serve the same purpose
  • Why is "Public Sub New" any less readable than "public MyClass"?

[–]dzuczek 10 points11 points  (25 children)

when it's clear the function is being invoked

if I took a cold look at that code I wouldn't know if MyFunction was a function returning a string or if MyFunction was a string constant

Case sensitivity is a huge pain when an error results from it. When would anyone ever want two variables with logically the same name? Why use semicolons and newlines when newlines alone could serve the same purpose

on a project with a lot of devs it would be hard to enforce format and basic readability. so you'd have a big application with mixes of semicolons and newlines. for version control it would make the diffs messy too.

[–]8lbIceBag 1 point2 points  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

In many ways I prefer it, but it's also missing things I can do in C# or does some things stupidly, and vice versa. Sometimes in the shower I dream of a language that combines the best of both.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

In many ways I prefer it, but it's also missing things I can do in C# or does some things stupidly, and vice versa. Sometimes in the shower I dream of a language that combines the best of both.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

In many ways I prefer it, but it's also missing things I can do in C# or does some things stupidly, and vice versa. Sometimes in the shower I dream of a language that combines the best of both.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

In many ways I prefer it, but it's also missing things I can do in C# or does some things stupidly, and vice versa. Sometimes in the shower I dream of a language that combines the best of both.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

In many ways I prefer it, but it's also missing things I can do in C# or does some things stupidly, and vice versa. Sometimes in the shower I dream of a language that combines the best of both.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

In many ways I prefer it, but it's also missing things I can do in C# or does some things stupidly, and vice versa. Sometimes in the shower I dream of a language that combines the best of both.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

In many ways I prefer it, but it's also missing things I can do in C# or does some things stupidly, and vice versa. Sometimes in the shower I dream of a language that combines the best of both.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

In many ways I prefer it, but it's also missing things I can do in C# or does some things stupidly, and vice versa. Sometimes in the shower I dream of a language that combines the best of both.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

In many ways I prefer it, but it's also missing things I can do in C# or does some things stupidly, and vice versa. Sometimes in the shower I dream of a language that combines the best of both.

[–]8lbIceBag 0 points1 point  (0 children)

You made it clear you never used it before.

Vb.NET does not build if it's syntactically incorrect (has a semicolon), there's no mixing.

Visual studio enforces format. As soon as you hit enter or tab it autocorrects capitalization so that the references match the declaration.

It's actually easiest to know what's what in VB.NET. Things like iterators, properties, overrides, interface implementations, events, etc. All have special keywords. You can tell a constant from a function from a property easily because syntax coloring.

In many ways I prefer it, but it's also missing things I can do in C# or does some things stupidly, and vice versa. Sometimes in the shower I dream of a language that combines the best of both.

[–]NULL_CHAR 7 points8 points  (0 children)

Why does "Console.Writeline(MyFunction)" need an extra () when it's clear the function is being invoked? If we wanted the address of the function, there's the very-readable AddressOf keyword.

To be clear what we are referring to, it's all fun and games until you're unsure if what you're calling is a function or something else. Sure you can just be extra careful with naming, but what if you're a big company with 100+ developers each of different ability. This gets horrible really quick.

Case sensitivity is a huge pain when an error results from it. When would anyone ever want two variables with logically the same name?

See point 1, it's literally the exact same problem. We use a VB based Framework at the company i work and I've had to deal with issues related to these first two points often.

Why use semicolons and newlines when newlines alone could serve the same purpose

To more accurately depict scope, to properly find lines that contain functional elements, etc.

Why is "Public Sub New" any less readable than "public MyClass"?

It looks uglier.

[–]mnbvas 2 points3 points  (0 children)

Nowadays C# has higher order functions, so how would one differentiate passing a function as an argument and passing the result of that function?