Why is Microsoft so good when it comes to programming language development?

Why is Microsoft so good when it comes to programming language development?

Attached: typescript.png (600x600, 114K)

>Why is Microsoft so good when it comes to programming language development?
>what is vb.net
>what is C#

C# is great though

enjoy your 20GB toolchain install

.NET Core SDK 2 is 389MB and just werks in VS Code

who cares?

VS is a god-tier IDE

TypeScript is worse than Flow in every fucking regard.

it's moderated by 2 devs, and there is a 2 year pull request backlog.

Microsoft is good at hiring talent to make shit, but sucks at refining and maintaining shit.

>god tier IDE
YOU CAN ONLY USE LIKE 4 FUCKING LANGUAGES WITH IT

>but sucks at refining and maintaining shit

What? They do releases almost every month, bringing new features and refining old ones. TypeScript 2.8 came out just last month and came with a big feature in conditional types.

TypeScript has evolved a lot over the years and any differences between the two is most likely going to come down to minutiae these days, while TypeScript itself has very much won over the market in terms of mindshare.

Please spend your whole life learning all the languages my man.

enjoy getting cucked by microsoft when 90% of things are designed for windows and azure

Love all the Apple & Gnu dorks who can't see the merits of anything outside of their bubble.

Attached: download.jpg (300x168, 5K)

>They do releases almost every month, bringing new features and refining old ones. TypeScript 2.8 came out just last month and came with a big feature in conditional types.

wow, i am fucking (un)impressed. meanwhile it takes 2 years to fix recursive type definitions that break IDEs and require vendor patches, because they don't accept outside help.

.NET Core is about explicitly taking things cross-platform though

MS wants you to use Azure sure but they don't do any hard selling about it

>Please spend your whole life learning all the languages my man.
monoglot pajeet brainlet detected

>I only use languages microshit wrote, therefore am only comfortable working micro enviornments

Pigeon, to your hole.

lmaoing @ all the unemployable LARPers in this thread

Anders Hejlsberg

Hindsight. Before they created abominations like
>J++
>JScript
>managed C++
>VBA
>VBS
>CMD
>POWERSHELL
and they had a lot of learning material from other scripting languages with glaring flaws like Python or Ruby.
As for implementations, you can mostly drown your problems with money.

The more important question is why most programmers are languagedesignlets.

>not using elm

this

They're one of the largest companies ever, that's why. They hire some of the best talent.

Honestly I'm a lot more surprised that they haven't done more. VS code is the best thing they've done in YEARS. A fucking text editor lmao

.NET Core SDK is a stripped down second class citizen version of .NET, it's not meant to be taken seriously.

>Honestly I'm a lot more surprised that they haven't done more.
They have done a lot at the side of libraries which they have killed later on.

c, c++, typescript, c#

what else do you need user?

Microsoft hires the best talent. They just don't get anything done because enterprise.

>it's moderated by 2 devs, and there is a 2 year pull request backlog.
Literally every decently sized project has a backlog that stretches into the next decade. That means nothing.

You can say the same thing about the wintoddlers. This place is a shithole

10 cents have been deposited to your account. Thanks, Pajeet!

A few good people on top of a mountain of shit.
Designing languages to minimize risk introduced by big development teams and intellectually challenged people. Dynamic typing must be destroyed.

The whole point of C# and Typescript, and pretty much any language Microsoft makes, is that the toolchain and IDE is fucking amazing.
Pull your head out of your ass.
We don't live in JavaScript-land or Python-land where your best guess for what a function outputs is "lol **kwargs"

>Interfaces are classes
>Classes are interfaces
>Copy retarded constructor initialization lists from C++
>In the end it is sugared JavaScript with all the cancer (like 'this', etc)
Fuck TS.

You're 100% right, but that's why whenever I write python I use type annotations all the time because that solves one of python's biggest maintainability problems. The other is the fact that 99% of all python is written do poorly that your eyes bleed.

Modern JS isn't even bad to begin with and TS only makes it better

Especially when you turn on strict mode in tsconfig and avoid using "any" in your code as much as possible for maximum typing

>Modern JS
Modern JS isn't supported but in the most recent versions of firefox and chrome for desktop, and this is literally why TS exists.

Both modern JS and TS have to be shimmed and transpiled to regular JS in order to use them in the real world of outdated mobile browsers and users who never update their browsers.

No language based in JS can ever be good. JS was a mistake.

python is handy for prepping data.

>c

oh shit I fell for the bait.

>Modern JS isn't supported but in the most recent versions of firefox and chrome for desktop
cringe

Aside F# everything is pure trash from MS. Of course MS fanbois and shills will find awesome any shit from them even if they can't tell why is it better than their loved one's competition.

That's a gateway drug for C#. Smart, but too late and may cause some harm to Windows Server sales.

>language is called typescript
>"typesafe"
>call 'this' in a factory and everything goes to shit

In strict mode TS will complain if you try using this when it's implicitly any and you'll need to define a type for it

In general you should be always using strict mode if at all possible

Write the out the full name properly or we gonna decrease your salary.

To begin with, having to address all the members of a class by this.x, this.y, it is verbose as fuck.
But then again 'this' is broken in TS, because it is JS under the hood.
And that is why very often you can't pass functions as parameters just by name and you end up writing the stupid lambda equivalent '() => foo()' because otherwise it doesn't work.

Or if certain functions should always have a bound context you could write them with the `() =>` syntax to begin with since it autobinds this at definition time

f#

>That's a gateway drug for C#. Smart, but too late and may cause some harm to Windows Server sales.
why is net core harmful to win server?

Because it's their original vocation.
>Microsoft was founded by Paul Allen and Bill Gates on April 4, 1975, to develop and sell BASIC interpreters for the Altair 8800.

Use your brain.
>run on linux server even with MS SQL
Got it? Good.

That is exactly what I meant with 'otherwise doesn't work'.
For me it is retarded having to prefix every class member with this, and in the end if a function uses this.member inside the compiler complains because doesn't know which this it is. And so you end up using the lambda which doesn't look as functional.
Whoever wrote the transpiler should have done it the other way around: this.x being x a class member should always bind 'this' to the class instance and not some hypothetical flying unicorn.

Attached: hx4Prda.jpg (228x221, 5K)

You couldn't be more wrong.

True, you can't do GUI with .net core but most business applications today are web applications and services.

That now runs on linux, on ms product. Probably. What a plan.

that's not what I'm talking about. TS/JS can keep the type and swap or undefine the object right under your feet.

I agree. when not otherwise defined, the scope in a method should be the class. but that's like whatever, fine. predictable.

but nigga, when you pass a function as a lambda so you can pass a function where this is this and not that or the other thing, when you can't even be sure whether the lambda solved your issue or made it worse, i think it might be time to reconsider the language.

and I'm not even sure if they can fix it. they have a "pure" keyword in the pipeline, but at this rate it'll never be implemented.

I'm just using let self = this meanwhile to curb side effects. but I'm just mad that I forgot about it and got a bunch of bugs and now I have to refactor everything.

Kinda funny when namecalling proofs my point.

the problem is that then JS is no longer a proper subset of TS. it's a giant catch 22 they rode themselves into.

Actually, I'm not blaming the typescript team. We could be using dart or whatever, but it's more difficult to get started with that, so everyone and their dog is using TS.

I hope MS won't hire you. Again.

Hi sir, I see you are with Microsoft, sir. Having a based job as tech support in Mumbai, sir?

And it's usually not really an issue until you're neck-deep in it.

the TS trap. or just "The Trap".

do you really think that mono with net core can be a threat to windows server? I wouldn't think so

>you can't do GUI with .net core
>what is qtsharp?
>what is xwt?
>what is electron.net?

>I hope MS won't hire you. Again.

I'm afraid I don't understand the reference or context. hm, I sound like javascript.

>you can't do GUI with .net core
Wrong. You can do anything. You can use interop to work with openGL directly and any cdecl library like xorg and wayland.
There is also gtk core where is literally just gtk# with simple modification to target .net core.
There is no difference between .net core and .net framework as of .net core 2.1 other than some OS support for ILEmit.

>TS/JS can keep the type and swap or undefine the object right under your feet.
Err, no? I've literally never had issues with "this" with TypeScript, and very rarely with JS (I don't even remember the last time I had trouble with it and I do JS/TS for a living). Have you even tried to remember the "this" semantics? They're not actually that complicated.

The biggest complaint I'd really have when it comes to this in general is that when using the class syntax instance methods do not have this bound to the instance by default, but at least it's easy to work around and only really relevant if you need to pass methods as arguments to other functions that do something with the instance in question.

class Example {
// unbound
foo(args) { /* ... */
// bound
bar = (args) => { /* ... */ }
}

>relevant if you need to pass methods as arguments to other functions that do something with the instance in question.

>it's more difficult to get started with that
Actually Dart was conceived as a language to be transpiled to JS just like TS. Dart, TS and ES6+ are very similar and can be learned by any monkey with a few neurons. For me it doesn't make sense to have three languages so similar around.
>everyone and their dog is using TS
Really? For what I know TS is only used with Angular >2 (Angular 1 used regular JS). Angular is considered outdated now that the coolest framework of the month seems to be React, which uses ES6. Dart was almost wiped out and Google didn't even care to support Angular 5 in Dart, they are stuck in Angular 4. Other than this it is used in Flutter but this is another project big G might shelve.

>to pass methods as arguments to other functions
user this is very common. There is no excuse. TS just sucks in this aspect.

In ES6 it is even more retarded. In React code you get to see long lists of this shit:
>onChange={this.handleChange.bind(this)}

For me coming from compiled languages this feels absolutely retarded. It all comes from JavaScript being flawed since its conception.
JS and its emanations are going to be shit no matter what.

Wrong faggot.
>Typescript/Javascript
>Python
>C#
>VB
>F#
>C++
>C
>Ruby
Any language can be supported via plugins.

well you can still use react with TS. In fact you can use pretty much anything with TS, and adding bindings is super easy (export interface), even if it's not explicitly supported.

I've never used dart, for the reasons we've established, so I don't know how it's there.

>Any language can be supported via plugins.
doesn't mean it has to work

Attached: ganesh.png (891x333, 17K)

Yeah, as I said, class syntax not autobinding this for instance methods is definitely a mistake in my books. Considering that new syntax was created for defining methods in the first place, why didn't TC39 just do that? Would save a lot of effort and pitfalls for new developers.

Still, as said, once you're aware of how this works, it's not actually hard to avoid pretty much ever running into issues with it, since it really just comes down to asking yourself "is this method that I'm passing without immediately calling it using this inside it, and is it bound properly?" whenever it's relevant.

censoring fail, oh well

>webstorm logo

>eclipse user

Peak autism

What? Who is this?

Types are the devil. You assholes don't deserve JavaScript.

>only recently got open source
>still heavily platform dependent and windows exclusive

this is undefined

It's a pain in the ass is what it is, especially if you are switching languages frequently.

C# is a standard (like C ISO), retard.
The good GUI stuff like w(indows)pf and windows forms are platform dependent. Anything you can do in .net framework you can do in .net core.

not even good bait

They have Microsoft Research Cambridge and Anders Hejlsberg.

You people are fucking retarded. I have never had a problem with the binding of 'this' and never had to use 'bind'. Just define everything as arrow functions.

t. ui babby

That is a hack and it is neither functional nor aesthetic. Lamdas are meant to quickly define an anonymous function on the fly. Named functions and methods are not anonymous. They already can be called by their name, so there is no need to define one more anonymous function to just call them.
That you need to do it in TS just smells of bad language design.

Dude have you ever seen Visual C++?

How about not giving a shit about anything but if it werks.

>Visual C++ is a PL

Attached: a35.jpg (600x336, 29K)

That's a very cute stance. Have fun staying poor you faggot

Attached: 1524020294809.jpg (554x439, 106K)

Because they actually employ good programmers and not just autistic faggots like Mozilla and Google.

They serve different purposes. Flow is designed to enforce soundness, TS is designed to consistently model existing JavaScript code.

Non arrow functions are not aesthetic

You're not up to date, pops. Mobile browsers auto-update no matter what OS or how old your phone is.
And all relevant browsers on desktop auto-update too. So actually most users are on the most recent versions of Chrome, Firefox and Safari. Modern JS, ie ES6, has been implemented in Chrome since 2015. Now it's almost 100% implemented in Chrome.

So actually the majority of devices are able to run modern JS, but devs still keep using Babel, probably because they are aiming for 100% support or just out of habit.

fuck you. kill yourself faggot

noob here, what exactly does it mean "to scale"?

better to use for large projects. specifically typescript is strongly typed while javascript is weakly typed

>typescript has no integer types
In the trash it goes.

I'd love to agree with you but never going to happen with Evan being a humongous faggot that lives in cuckoo land while pretending he's bringing pragmatic solutions.

The Reason guys from Facebook are closer to what a real functional web language should be.

Because they are basedboys.

Every other answer is objectively wrong.