Primitive streams. Their need to exist is a monument to legacy failure.

OrElse and AndAlso short-circuiting operators. The language designers were too fucking lazy to process logic, so they give specific keywords for those cases.

Random Hebrew error messages

Eval. It can be used responsibly, but most of the times you see it it's because someone fucked up.

Lack of Tuple destructuring in argument specification. Tuples were added, and pattern matching was added, and it's been getting better. The gear grinding starts with how Tuple identity assignment in arguments is handled. Rather than destructuring into the current scope, it coalesces the identity specification into a dot property of whatever the argument name is. This seems like an afterthought given they have ootb support for ignore characters.

This will probably be remedied in the next version or two, but Tuple identity forwarding between anonymous scopes normalizes to arrays of union types, because tuples compile to typeless arrays. It's irritating because you end up having to restate the type metadata in functional series even when there is no possibility for any other code branch to have occurred.

  • 1
    Excuse me WHAT? Hebrew error messages? Which version though?
  • 8
  • 0
    @SortOfTested ah, this. Seen this actually thanks anyway
  • 1
    I could have gone with any number of things, but that level of "can't even be bothered" kind of embodies all of them pretty well.
  • 1
    @SortOfTested That was interesting, thank you
  • 4
    The reason for orelse is that “or” in basic from MS has never been short circuiting, the same with pascal which also uses eager evaluation since at least the 60’s

    Many of the first languages used eager eval.

    So its not laziness, its avoiding a major breaking change ;)

    The rest I agree with :)
  • 0
    When you craft a new language, there's nothing to break.
  • 3
    @SortOfTested but vb.net is just a new implementation of basic that was created 1964.
    For reference C came 1972.

    But short circuiting was also a bit controversial at the time since it mixed control logic with boolean logic.

    You can read more here

  • 1
    Next time when you get random Hebrew PHP error messages, you know who to contact.

  • 0
    Much like VB itself, it had little if anything to do with basic outside of the name. It broke all manner of Basic conventions, so there's not really any excuse for fixing something broken in the context of a modern object-oriented language. Basic was a procedural language, which requires mechanisms that don't make sense in that context. Things VB.net actually was:

    - a play by Microsoft to keep the VB6 community from defecting
    - a tech demo for CLI/CLR viability, and a means to try and draw a distinction between .net and java in the early ecosystem
    - a way to give an old Microsoft employee with political pull somewhere he could retire.
    - a thinly veiled attempt to draw the MS office "powerusers" into using .Net.
  • 1
    Really? That's your most hated function of PHP? 🤔
  • 1
    Already covered in other comments.
  • 1
    @SortOfTested well, i have used basic since GWBasic 2.11 up to vb.net.

    Once C# cane I switched over.

    So I know, and still, basic is not the only one, java also have non short circuit versions, same with delphi which grew out of turbo pascal.

    So its more a question of why change the existing one when all other languages from the same age and philosophy has not.

    VB.net was much as you said a way to keep their current developer base, why risk that.

    Instead of risking to alienate them they created C# for those that disliked the basic language.
Add Comment