FrankPfattheicher / WeaselHelper395

2 stars 1 forks source link

You need a business goal aka requirements #3

Open yellowbrickc opened 6 years ago

FrankPfattheicher commented 6 years ago

You are invited to add one !

yellowbrickc commented 6 years ago

Sorry, but cannot. I don't know for what is this project for ;) (because the name is only a placeholder)

cessor commented 6 years ago

If you don't know what you're doing, the identifier names in your code will reflect that. The name of the solution says it all.

Code is no end in itself. What problem are you trying to fix? Who gives the code its meaning, its standing in this world? What problem from the real world do the entities in your code stand in for?

You are already done. You have no problem, so you shouldn't write code. If you have a problem, and you feel it needs written code to be solved, I'd be glad to help you out and explain what I meant with

"Small, named, tested units."

CarstenKoenig commented 6 years ago

Who gives the code its meaning

I'm a secret fan of denotational semantics although I know that operational somewhat got on top ... but maybe you are talking yet another level of meaning ... one where a definition or a mathematical model might be lacking ... yuck

cessor commented 6 years ago

@CarstenKoenig Could you elaborate a bit on how you think denotational semantics apply here?

I am refering to @yellowbrickc 's statement

"Sorry, but cannot. I don't know for what is this project for"

How would a computer program, an algorithm, or any formal method ever be able to solve this problem?

To maybe get on the same page, I can layout my view: Semantics is an overused term, because programming languages already have syntax and semantics. But what you are dealing with, when you apply a program in the real world is "meaning". Just like the word "table" refers to the physical object in your kitchen or livingroom. In linguistics, semantics refer to this "world meaning". Programming langauges however have twice the amount of problem space - semantics means: "how does this for loop behave". But code is interpreted by cognitive agents and machine agents, thus the symbols have to be meaningful to both machines and cognitive agents. In addition to the semantics of the language, they have real world semantics as well. You could call this the program's "purpose", "meaning", or its "usefullness" - it's when your customer nods and says: Yes, this is what I wanted.

Semantics and formalisms relevant for the machine, e.g. for verifyability, performance, correctness, etc. But the names are relevant for reasoning about whether the solution is appropriate and meaningful. These "real world semantics", I would call "intentional semantics". It is the idea that a mathematical formula doesn't do anything, until you feed in some input, get some output, and interpret the results. This interpretation of symbols can't be automated; it is an epistemological (erkenntnistheoretisches) problem.

(maybe you can infer from my answer why I am always going on about names - but why I don't deny the usefulness of type systems and so on. I see both approaches as complementary. Go team good code!)

So how can we solve the problem that this project .sln has no purpose? How can formalisms create purpose?

CarstenKoenig commented 6 years ago

just trolling a bit (I assumed this would be a sub-goal of the repo here)

When someone asks me about the "meaning of code" - I actually think about it's semantics.

Yes I know you are talking about the "purpose" or just said business goal the program shall solve - sorry