|
|
This is not good work by Microsoft. What about the old systems? Like Windows XP and the users that don't want to support .NET 4.5?
What about the developers who develop the applications for the old framework. This is not fair by Microsoft.
Favourite line: Throw me to them wolves and close the gate up. I am afraid of what will happen to them wolves - Eminem
~! Firewall !~
|
|
|
|
|
Considering that Microsoft doesn't support XP anymore, I don't think they really care about the users.
|
|
|
|
|
Considering how sad XP really was near the end and how long it took them to replace it adequately, one could make the argument that Microsoft has not really cared about its customers for quite a few years.
Government is not reason; it is not eloquent; it is force. Like fire, it is a dangerous servant and a fearful master. ~ George Washington
|
|
|
|
|
Afzaal Ahmad Zeeshan wrote: This is not fair by Microsoft. Ah, it would be more fair to prohibit them from dropping support?
It's their product, and their decision. In a similar way, you cannot force the market to produce Betamax-hardware, or spare parts for your walkman. Neither companies nor products have an eternal life.
Afzaal Ahmad Zeeshan wrote: and the users that don't want to They should have realised the risks before buying that Betamax.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
C++ creator Bjarne Stroustrup writes: “C++14 was delivered on schedule and implementations are already shipping by major suppliers. Coming soon: more uses for those characters you never type otherwise
|
|
|
|
|
Is it as good as D yet? I don't see how they can continue to post-increment C without reaching D.
|
|
|
|
|
I think they should start pre-incrementing C so that people use it like a better language...
rather than having a better language and continuing to use it like C
|
|
|
|
|
I really believe, newer is better!
Favourite line: Throw me to them wolves and close the gate up. I am afraid of what will happen to them wolves - Eminem
~! Firewall !~
|
|
|
|
|
This is just an interim release that mainly fixes features introducted in C++ 11. The next version should be the good one :- Concepts Lite should make it into the standard.
"If you don't fail at least 90 percent of the time, you're not aiming high enough."
Alan Kay.
|
|
|
|
|
Oracle has taken its development of Java 9 up a gear. A preliminary set of Java Enhancement Proposals (JEPs) for the next major release 9 has appeared on OpenJDK. And this time, Oracle are talking real features. A "smart Java compiler"? Excuse me while I avoid the obvious snark
|
|
|
|
|
Modular source code? Color me intrigued...
|
|
|
|
|
A perspective on whether Moore's law will hold, as well as whether it matters. Moore's Law is more of a guideline
|
|
|
|
|
They always have. That may have been Moore's point.
Mechanical ==> electronic --> relays --> tubes --> transisters ...
All the different techniques that have been used to store a bit.
|
|
|
|
|
Real innovation doesn't happen behind closed doors. "Talk is cheap. Show me the code."
|
|
|
|
|
The tag line is a circular argument - real innovation may happen behind closed doors but because those doors are closed we don't know about it.
However a more serious problem is this articles glossing over the fact that the most significant cost - "For example, a company may spend $100,000 on an ERP system, but they're going to spend another $500,000 making it work. " - doesn't go away if you use open source.
The hidden cost of open source is that you need to employ someone to watch that open source project(s) and merge in (or not) changes as they occur. You need to maintain a catalogue of what OSS is used and where - so if something like HeartBleed comes along you know what needs to be fixed.
|
|
|
|
|
Unity’s WebGL deployment support will be free of charge for both free and Pro users. You’ll be able to build a game in Unity’s engine and push it to the web without paying them a dime. Oh, Flash: don't let the door hit you on the way out
|
|
|
|
|
C++ inventor details the language's latest changes and assesses the strengths and weaknesses of its competitors. The kids love them some braces and operator overloading
|
|
|
|
|
A question come to mind, what is a 'real' dev? Why should I care anyhow?!
"Real" developers love C++? good for them!
|
|
|
|
|
The new C++ standard instead of simplifying the language, has complicated the language with hard-to-remember rules for new features like auto type inference. All these people in C++ committee, none of them has read research/books on human brain? Human brains can at best juggle with 3 - 4 things at the same time: When developers does coding, he/she have to deal with the specs, the APIs/libraries and the language. With a complicated language, it is easy to make mistakes with so many rules to remember. This shows that computer languages are better designed with a few people than by consensus.
|
|
|
|
|
This is why my main languages are C and C#. I missed C++ out, every bit of code I've seen just looks damn scary. I'm sure it's not that bad when you use the language, but still.
.-.
|o,o|
,| _\=/_ .-""-.
||/_/_\_\ /[] _ _\
|_/|(_)|\\ _|_o_LII|_
\._. |\_/|"` |_| ==== |_|
|_|_| ||" || ||
|-|-| ||LI o ||
|_|_| ||'----'||
/_/ \_\ /__| |__\
|
|
|
|
|
I agree, but remember just because a feature exists does not mean you have to use it
|
|
|
|
|
Another concept from functional programming languages making its way to C# and VB is what’s known as pattern matching. At first glance pattern matching looks like a switch/select block, but it is much more powerful. Coming up next: The 20 questions interface for identifying variable type
|
|
|
|
|
Since the InfoQ article failed to meet even that sites low quality bar, could someone explain what the new language features are, what they're able to do, and why I should care? Preferably in the form of comparing longer/cumbersome/confusing/etc code samples that's the best option available with the current language with short/simple/concise versions that will be possible in the future.
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason?
Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful?
--Zachris Topelius
Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies.
-- Sarah Hoyt
|
|
|
|
|
I'll give it a go...
First, the new record class construct allows creating classes similar to types in Haskell. They are purely structural, and immutable.
public record class Cartesian(double x : X, double y : Y);
which is equivalent to:
public class Cartesian {
private readonly double $X;
private readonly double $Y;
public Cartesian(double x, double y) { this.$X = x; this.$Y = y; }
public double X { get { return this.$X; }
public double Y { get { return this.$Y; }
public static bool operator is (Cartesian c, out double x, out double y) { x = c.X; y = c.Y; return true; }
}
Unlike normal classes, record classes do not need "new":
var c = Cartesian(3, 4);
The crucial part here is the "is" operator, which is used for pattern matching.
if (c is Cartesian(var x, y) {
Console.WriteLine("c.X == " + x + ", c.Y == " + y);
}
If you're only interested in one of the fields, the other can be matched using a wildcard "*":
if (c is Cartesian(var x, *) {
Console.WriteLine("c.X == " + x);
}
Another common use (in C#) will be to robustly handle nulls:
int? x;
...
if (x is int v) [
}
This corresponds to use of the Maybe monad in Haskell.
More complex patten matches can be constructed. These are useful for deconstructing types such as trees.
Consider a set of record classes representing expressions:
abstract class Expr;
record class X() : Expr;
record class Const(double value) : Expr;
record class Add(Expr left, Expr right) : Expr;
record class Mult(Expr left, Expr right) : Expr;
record class Negate(Expr value) : Expr;
An expression can then be represented as:
var expr = Add(Const(3.0), Negate(Mult(3, 5)));
And pattern matching (this time using switch) can deconstruct it nicely:
Expr Simplify(Expr e) {
switch (e) {
case Mult(Const(0), *): return Const(0);
case Mult(*, Const(0)): return Const(0);
case Mult(Const(1), var x): return Simplify(x);
case Mult(var x, Const(1)): return Simplify(x);
case Mult(Const(var l), Const(var r)): return Const(l * r);
case Add(Const(0), var x): return Simplify(x);
case Add(var x, Const(0): return Simplify(x);
case Add(Const(var l), Const(var r)): return Const(l + r);
case Negate(Const(var k)): return Const(-k);
default: return e;
}
}
I presume that, like Haskell, the first matching expression wins.
"If you don't fail at least 90 percent of the time, you're not aiming high enough."
Alan Kay.
|
|
|
|