854 karma · joined January 15, 2016
Just reading a book on the Linux kernel and it's structure should be enough to get you going.
I played recently ck3 and, even if the vanilla gamw is better than ck2, i got the same dull - boredom after 20 hours than i had when i played vanilla ck2 for thr first time. Give it some time :~)
1: like most of C++ one would way
Made by former staff of Sdz, high quality, can't recommend enough.
And elpa is enabled out of the box ;-)
The most successful example is Semmle (bought by Github), which has been doing it for years now, with a SQL-like syntax for requests (named ".QL").
Legacy V-cycles (needs - spec - code - test - integration - product) were such that everything was written down and planned in advance for months/years. So, if the customer had made an error, his/her needs had changed... you were basically screwed.
Agile advocates for Short V cycles while getting often user feedback. But it's a V cycle.
- PO speaks to the customer = get needs - PO writes tickets, UX design something = specification - And then it follows the classical cycle : develop, test, integrate, deliver.
What's remain around agile (ceremonies & co) feel much more like bullshit to me, and people follow it religiously without understanding the core idea of agile as they think V cycle is an insult.
And it's an issue as operators phase out 2D...
I think that languages like this don't go mainstream because people like/want to write code, and anything that does not help to actually write code is seen as an hindrance. The main feedback I've heard about this kind of tool is "it's clunky, it's a pain to write code with". Guess what ? It's a good thing IMO.
For this to go mainstream, the whole software industry would have to go through a major revolution by shifting its focus from "writing code" to "deliver a working product". We should acknowledge that "writing code" is one tool among others, and may be not even the primary one (I personally think that specification engineering is the most important one).
In the field of critical embedded software, this has happened that's why it took off.
Another clue of that is for instance the Event-B/Atelier B that is intensively used in the railway/metro world (Paris line 14 was made with it, 2 bugs found in 15 years). While doing B, you get a broad specification you refine along the way into smaller problems. Writing code is actually the last step you do, when you are sure that all pieces fit together.
Seems to be more relevant.
#include <iostream>
#include <string>
struct A {using ret = std::string;};
struct B {using ret = int;};
template <class T>
auto f(T t) -> typename T::ret
{
return {};
}
int main(int argc, char *argv[])
{
auto s = f(A{});
std::cout << s.size() << "\n";
auto i = f(B{});
std::cout << i+1 << "\n";
return 0;
}
There is also stuff like this where the return type is defined as the return type of builder.makeObject(), builder which is the argument: template <typename Builder>
auto
makeAndProcessObject (const Builder& builder) -> decltype(builder.makeObject() )
{
auto val = builder.makeObject();
// do stuff with val
return val;
}