At this point, calling it by its correct name (Sum Types) would leave them looking stupid for not using the correct name (Product Types) for their “records”
> not using the correct name (Product Types) for their “records”
There is no single "correct name" as there is no single "problem domain" that covers the algebra of type theory, and the pragmatics of programming in engineering, along with other areas.
both tuples and record (structs) are product types. tuples are "untagged", records/structs are "tagged" (the members have names).
sum types also have tagged and untagged variants. the untagged variants are less useful (more cumbersome) in case of sum types and hence often are not implemented in languages.
C# tuple field names are an interesting case, spiritually similar to this proposal's ad hoc unions: persisted in compiled output via attributes, respected by the compiler even across assembly boundaries, but not actually part of the resulting CLR type. So, e.g., if
var p = (x: 1, y: 2);
var q = (u: 1, y: 2);
var f = ((int x, int y) a) => a.x + a.y;
CS1061: '(int u, int v)' does not contain a definition for 'x' and no accessible extension method 'x' accepting a first argument of type '(int u, int v)' could be found (are you missing a using directive or an assembly reference?)
and if
dynamic d = q;
then
var s = d.u;
compiles, but throws
RuntimeBinderException: 'System.ValueTuple<int,int>' does not contain a definition for 'u'
That sounds more like an OOP thing than a type system thing - functional languages make excellent use of type systems without mention of anything remotely sounding like a “Design Pattern (tm)”
Well that depends entirely on what you consider to be the goal - as a software engineer, your role is entirely concerned with engineering excellence. As a member of a team, especially a team of extremely highly paid and highly educated individuals, it is your duty to spend your time (and thus, the company’s resources) efficiently by doing what you’re educated, qualified, and hired to do.
Few people agree that the goal of SWE is engineering excellence. It is to solve business problems. Engineering excellence is a means to a goal: to be able to solve _difficult_ problems _correctly_ and allow solving new problems _in the future_. All these things can be traded off, and sometimes aren’t even needed at all
You don’t need science to explain how dysfunctional society is. The problem with “soft sciences” is that they can’t produce provably correct information. Incorrect information is worse than no information.
> You don’t need science to explain how dysfunctional society is.
You absolutely do lol, or you're just straight wrong. Take your pick.
> The problem with “soft sciences” is that they can’t produce provably correct information.
Neither can hard sciences. Proofs are incompatible with empiricism. Abductive proofs (which is what the scientific process offers) are necessarily bounded by limited certainty. All you can do is progressively improve certainty approaching 100%, but reaching it is necessarily impossible. This is just basic Hume. You can never be 100% sure the sun will rise tomorrow or that the fundamental laws of physics won't arbitrarily change.
But, the same applies to soft sciences. We can and do increase our certainty continually. This is absolutely worthwhile and is probably far more valuable to humanity than merely modelling physical phenomena.
> an obvious counter-example is an explanation that happens to be coincidentally correct
How can you establish "correctness" without something like the scientific method? How do you even bind loosely-defined english to verifiable claims to real-life referents without agreeing with others on terms? No, you're chosen simple, comforting delusion over anything resembling objective truth.
> This seems like an attack on the notion of objective truth
Yes, truth is an apriori concept; objective truth is a silly delusion. Coherence is generally a much stronger concept anyway.
I’m assuming by “wrong” you mean “false” and not “morally objectionable” therefore I must disagree.
It is an *unsustainable* position to hold that something is bad regardless of whether or not it is true. Basing your morality on potentially false information is a guarantee for conflict.
Likewise, if your morality never changes, especially when you learn and grow from experience, you’re stunting your growth as an individual and causing problems for society as a whole. Imagine a child refusing to update their understanding of morality as they age.
If you don’t have a degree you almost certainly don’t have years of (professional) software development experience.
The only exception in my experience (and this helped me get a job when I was a new grad) is having a large portfolio of tangible projects. Not just react tutorials, programs that solve a problem someone had or did something interesting. For example, I did a lot of programming in middle school and high school related to automating games like RuneScape. Also had a win at the international science and engineering fair in the computing division. It’s safe to claim years of experience when you’ve got something to show for it.
Most companies ban giving feedback for the simple fact that the hiring process is not objective and it’s super easy to accidentally incriminate yourself.