dotnet / vblang

The home for design of the Visual Basic .NET programming language and runtime library.
288 stars 66 forks source link

Not for beginners. Not for professionals: VB.NET is in indeterminate state! #452

Closed VBAndCs closed 3 years ago

VBAndCs commented 5 years ago

My nephew is 13 years old. I am trying to teach him VB.NET. There are tons of basic facts that he should learn before producing any thing useful. The worst is that he and his generation are not interested in desktops, as they live in mobile and tablet worlds! He keep asking me about who would use such example in real world, and he is absolutely right! I keep telling him: these are the basics but you can build mobile apps later! Of course I am a liar, because he can't do this with VB.NET! VB6 was easy to start with, even with no programming basics. I know that learning programming is a different thing than learning programming language, but these young impatient kids need to do some attractive apps first before sinking in programming science. The shocking fact is that VB.NET in its current state is not a beginner language any more, nor a professional one! It is a thing that needs years of learning just to be abandoned to C# at last! I think VB.NET needs to be redesigned from scratch, to achieve two goals:

  1. RAD programming and quick leering: This can be done by adding more wizards and generated code (preferred to be semi hidden unless the programmer navigates to). May be there should be some basic code blocks and a designer to map them on, so VB gains its missing Visual part! Make use of light switch in some way. Winforms also can have more composite controls to be used with the most used data entry forms and alike. In a few words: beginners should start production in seconds.
  2. Desktop era is gone. Most people now doesn’t have a PC or a laptop for most their life! If VB.NET is domed to be a desktop language, this is a death sentence. So, VB.NET must target ASP.NET Core and Xamarin.

By the way, my nephew got confued with Char type and VB6 Chr function, so I had to use Convert.ToChar to be consistent. There are a lot of confusing naming conventions between VB and the framework. All that legacy non sense is a heavy burden over beginners. I strongly advice to look ahead and break the backward computability.
Its time to create a new clean VB.Core lang for new generation. I repeated that many times before, trying to suggest alternative syntax for some blocks to be more familiar to beginners as I imagined. Now I am talking based on a practical experience.

rrvenki commented 5 years ago
  1. RAD was VB once upon a time. The secret was its templates coverage. Now that is exactly the point. Though we can convert C# to VB and create Winform, WPF, Console, SQL CLR, IoT (UWP) etc. it is a missing startup point - Templates. We as a community can create a Git repository of templates in VB!
  2. Desktop appears to be gone now. But I believe in due course Web Apps will move into Store apps. UWP will have a say at that time which could work UNIVERSALLY.

Like in pre VB6 we should create multipage Wizard based template(s) to create a UWP VB project to incorporate AAD login, complex navigation, theme (with customization), Integration of Facebook, Twitter etc. authentications, Email/SMS integration, MQ/Kafka integration, EF Core scaffolding, etc. At the end of the 5-10 page wizard, the template should create a comprehensive full blown UWP app in VB.NET and leave the developer to concentrate only on implementing business logic. This itself will be a USP for VB.NET.

@VBAndCs, for your nephew I would suggest a good starting point for VB which is "smallbasic" from Microsoft.

zspitz commented 5 years ago

Relevant: #446

Perhaps take a clone of @AnthonyDGreen 's fork?

VBAndCs commented 5 years ago

@rrvenki Great suggestions. I advise to open an issue in WinForms repo for that. Put I didn't like small basic! It is not quite a compact version of VB.NET. For example, the For block ends with EndFor, which is confusing and kills the meaning of the loop, as Next' implies the iteration, whileEndFor` implies breaking of the block! This one particular bad design decision turned me off. We didn't face such learning difficulties as we started with GW Basic, QBasic, Visual Basic then moved to VB.NET. At each step we were targeting the hardware available then. Now, a child needs to start programming by targeting mobiles and tablets. I need a basic language for this purpose! I hope that .net core targets android and ios as well, so, we can run the same application on any platform, without needing Xamarin! Noting that XAMl is not easy for kids, so winforms designer should paly a role in that beside XAML! Again, the language needs to be redesigned for a new generation, otherwise it will die with the last one of our generation.

hartmair commented 5 years ago

@VBAndCs

There are a lot of confusing naming conventions between VB and the framework. All that legacy non sense is a heavy burden over beginners.

Can you give some details at #448 in order to update the list in the description there?

CyrusNajmabadi commented 3 years ago

This issue doesn't seem to be actionable. Closing out.

VBAndCs commented 2 years ago

I can now introduce the solution: Small Visual Basic bridges the gap between Small Basic and VB.NET. sVB 2.5 release is ready for production