6 ms·
Oh common ... Kinect, C#, F#, Linq, Office, Win7 (this one is debatable but I really think it's full of innovations even if I'm using OSX principally). Of cour
by mickeyben 16y ago
Oh common ...
Kinect, C#, F#, Linq, Office, Win7 (this one is debatable but I really think it's full of innovations even if I'm using OSX principally).
Of course some of them are here through acquisitions but they made them great products.
- masklinn 16y ago> Kinect, C#, F#, Linq, Office, Win7 (this one is debatable but I really think it's full of innovations even if I'm using OSX principally). Erm... Kinect is the only product even remotely innovative there. Office has never been innovative in all its lifetime (apart from the Ribbon if you stretch it), C# is as innovative as mud (== it was innovative a few billion years ago), F# is an OCaml crappified by making it compatible with the .Net framework and LINQ is a bunch of collection methods, a preprocessor and a common interface (yeah that was innovative about 30 years ago). > Of course some of them are here through acquisitions but they made them great products. Obtino was talking about innovation. Apart from Kinect, none of the things you mentioned is even remotely innovative.
- statictype 16y agoF# is an OCaml crappified by making it compatible with the .Net framework It's very difficult to take you seriously when your argument is that a piece Microsoft technology is crap based solely on the fact that it happens to be compatible with another piece of Microsoft technology. If you had any actual critique of F#, the language, you might make more sense. You could start by explaining how F#'s support for monads doesn't already make it a superior language to O'Caml. and LINQ is a bunch of collection methods, a preprocessor and a common interface Even worse, it's all just a bunch of 1s and 0s!
- masklinn 16y ago> It's very difficult to take you seriously when your argument is that a piece Microsoft technology is crap based solely on the fact that it happens to be compatible with another piece of Microsoft technology. That's a weird statement to make. I'm not saying it does not make business sense, I'm saying F# is worse than it could be because it needed to be compatible with the .net framework. Furthermore, I didn't say F# was crap, I said it was a crappified (aka worse) OCaml due to that. And as a result it would have a hard time being innovative (due to being an inferior version of a 16 years old language) > If you had any actual critique of F#, the language, you might make more sense. That it's compatible with the .net framework and its imperative APIs, with all it entails (such as nulls or mutability galore) is very much my critique of F#. It's a worse language (than it could have been and that its ancestor) because of that. > Even worse, it's all just a bunch of 1s and 0s! Wonderfully missing the point, which is the part between the parens. Building a library is not innovative in and of itself, and there is nothing in linq's concepts or execution which is novel or innovative. You seem to have taken an extremely defensive stance on my view that, apart from Kinect, none of the things mentioned is innovative. I guess that you disagree, do you have any argument as to why those things would be innovative (outside of a microsoft-driven world)? What makes LINQ innovative exactly? Or F#?
- statictype 16y agoI'm saying F# is worse than it could be because it needed to be compatible with the .net framework. I disagree. I would say the opposite: That F# is a better language because it can access the rich set of libraries that already exist in the .NET ecosystem. You seem to think that's a bad thing. I don't think many would agree with that. I think it's certainly innovative to have created a functional, static type-inference based language that can sit on top of the .NET runtime as a first-class citizen. Building a library is not innovative in and of itself, and there is nothing in linq's concepts or execution which is novel or innovative. Incidentally, LINQ is not 'just' a library. It can translate code written in a higher level language by examining the expression-tree that the code compiles down to. This is sort-of a poor man's lisp macros built into a statically typed language.
- JonoW 16y agoLINQ is innovative because it brings a generic query language as a first-class citizen in the language. I.e. LINQ is more than just a library as they added syntax constructs for it.
- beagle3 16y agoInnovative implies new. Other languages (LISP, APL, in many senses even Python) had this a long time ago. The fact that they had to add syntax is because C# isn't sufficiently flexible without it. It does not imply any form or manner of innovation.
- Hov 16y agoBy this logic Apple is not innovative.
- Dn_Ab 16y agoArguing which language is better is like trying to place a total ordering on the complex numbers or figuring out if the hulk or superman would win in a fight, futile. Each language is different and excels at it's own niche. Ocaml has functors and modules and polymorphic variants and compiles to very fast native code. F# has more libraries, units of measure, and better support for parallelism. What is innovative about F#? Getting proper generics on a runtime like .NET is not something to scoff at. F# was one of the first languages to support view patterns - pattern matching on objects. Balancing OOP with functional, as well as very smooth interop with .NET is its own accomplishment. Leveraging a language that balances FP and OOP well will lead to a powerful style of language that simply is not well explored at the moment. Scala is another one with this feature. Actors, First Class events and async can have you write code that is either parallel, reactive, concurrent or asynchronous easily. Workflows (monads) are also innovative and with inlining you can write succinct code that is faster than C# in certain cases. As someone who is using F# to write some machine learning code (as well as thinking about approaching genetic programming, something dead easy in F#, with category theory in mind) its future plans on typed datasets in the language are intriguing. As for Linq its innovation is that it is a generalization of list comprehensions. Here is what Erik Meijer has to say: "A lot of people, when they hear LINQ, they even think about "It's something that has to do with SQL and databases". I don't think people realize that any type that implements these sequence operators you can write queries over, like in Haskell, as long as you are going to implement the monads type class - you can do binds, return and so on. All that's comprehension and it's exactly the same here. It will just take a little time before people have discovered that and they will write the most crazy LINQ implementations. These things take time and I think it's good that they can get used to it in its current shape for lists or for collections that they understand. They will go on and do state monads and exception monads - I don't what - because if you look at the sequence operators, they are the monadic operators. What is also interesting is that, besides "select from" and "where" we also have "group by" and "order by", which are not in Haskell's comprehensions. Then the funny thing is what happened is that the Haskell guys saw that and said "That's quite useful". Simon Peyton-Jones and Phil Wadler wrote a paper where they improved the Haskell comprehensions with things from LINQ, so it is a nice circle going on where the languages influence each other and get better."