|
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.
|
|
|
|
|
Maybe it's just that I've never done any Haskell, etc.; but I'm drawing a blank oncoming up with any useful ideas of what I could do with this that I can't (easily) do without it between the trivial examples and the one I'm looking at and going
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
|
|
|
|
|
The last example I gave is more typical - the small trivial ones are unsurprisingly trivial (although anything that helps avoid null reference exceptions neatly is not really trivial, as that remains one of the major causes of software defects). The last example illustrates the true use of pattern matching more.
What is achieved is a little embedded Domain Specific Language (DSL) for expressions, along with a mechanism for simplifying those expressions, so that (x + 0) gets simplified to just (x). This is incredibly useful in many areas. Common uses are expression parsing, walking trees without requiring awkward visitor classes, filtering data, differentiating and integrating expressions. While all this can be achieved without PM, it typically reduces 100's of lines of code to 10's (with the corresponding decrease of chances of bugs).
I remember being similarly bemused when I started learning PM, but I encourage you to persevere. It is one of the most useful new techniques I have learned in the last decade. I'm looking forward to the extensions immensely, even if they are nobbled compared to the power of those presented in functional languages and Haskell particularly.
"If you don't fail at least 90 percent of the time, you're not aiming high enough."
Alan Kay.
|
|
|
|
|
C#6... And what happened to C#5?
|
|
|
|
|
C#5 came out with the 4.5 framework. (What you expected them to keep the version numbers for the two in sync. )
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
|
|
|
|
|
Are they trying to imitate Java?
|
|
|
|
|
I think these are closer to Haskell, F# and other functional languages.
"If you don't fail at least 90 percent of the time, you're not aiming high enough."
Alan Kay.
|
|
|
|
|
What you may not know is that the same design decisions that make DirectX 12 so performant also make it incredibly power efficient. This allows you to play all of your favorite games on portable devices without having an uncomfortably hot device on your lap or as much of a need to carry around a cumbersome power adapter. More power, less power. Make up your minds!
|
|
|
|
|
In a job posting that went live today, Microsoft made a reference to Windows as a Service, but other than the name, not much else is known about the platform. Microsoft's OneCore also gets referenced as well, but we are not sure if the WaaS and OneCore are related in the capacity in which they are mentioned in this job description. Put your OS in the cloud, and hope it doesn't rain
|
|
|
|
|
Microsoft is aiming to make available a technology preview of Windows Threshold around late September or early October. We are on the threshold of... Threshold
|
|
|
|
|
After several complaints from users, the company has acknowledged issues in the August Update, and is now advising users to uninstall some of the modules from the computer. Additionally, Microsoft is currently investigating it and, for the time being, has pulled the download links. "Oops, I did it again."
|
|
|
|
|
You probably didn’t use it, and may not have even heard of it, but the now 20-year-old IBM Simon was the world’s first smartphone, on which you could write, draw, manage your contacts and calendar, and send faxes – it even had apps.
...and about the same battery life
modified 16-Aug-14 15:48pm.
|
|
|
|
|
|
He must be sorry for the evil deed he did! We can't even look at any content without seeing these millions of Pop-ups and then getting annoyed!
Favourite line: Throw me to them wolves and close the gate up. I am afraid of what will happen to them wolves - Eminem
~! Firewall !~
|
|
|
|
|
Pretty arrogant to apologize. I mean, if he didn't do it, someone else would have...
|
|
|
|