Scratch is good at what it is; I know people who swear by LabView, Alteryx and similar tools rather than swearing at them.
One could make the case that current software development tools really aren't good enough and that one fundamental problem is dealing with naming and polysemy.
The trouble fundamentally is that there is no system that is going to produce ergonomic names for everything. There are systems that can name everything but the names look like
84746261718
or
178bcd0d-70ce-413b-9497-5364a5f56972
which people can't remember or easily discover. Part of the appeal of GUIs is that you can pick something out of a palette, list, or menu although the gain you get there is limited. Ever see a 1000+ page book on Microsoft Word or (worse) try to explain to somebody how to use mobile apps for the first time (eg. "click on the hamburger icon; huh?", "swipe down; ... doesn't work ...; maybe when you swipe down you have to start above the edge of the screen...") and you realize that there are limits to how many things you can present on a screen and how well people can find things.
When you are talking to people you can use a word which is ambiguous and people figure it out most of the time and if they don't figure it out you can have a conversation with them about it as opposed to a programming language compiler which typically give messages like:
Could not find or construct Composite[CustomDataType].
[error]
[error] If CustomDataType is a simple type (or option thereof) that maps to a single column, you're
[error] probably missing a Meta instance. If CustomDataType is a product type (typically a case class,
[error] tuple, or HList) then probably one of its component types is missing a Composite instance. You can
[error] usually diagnose this by evaluating Composite[Foo] for each element Foo of the product type in
[error] question. See the FAQ in the Book of Doobie for more hints.
Until we accept that we can do fundamentally better and that we must we are going to be stuck having the same stupid conversations.
Scratch is good at what it is; I know people who swear by LabView, Alteryx and similar tools rather than swearing at them.
One could make the case that current software development tools really aren't good enough and that one fundamental problem is dealing with naming and polysemy.
The trouble fundamentally is that there is no system that is going to produce ergonomic names for everything. There are systems that can name everything but the names look like
84746261718
or
178bcd0d-70ce-413b-9497-5364a5f56972
which people can't remember or easily discover. Part of the appeal of GUIs is that you can pick something out of a palette, list, or menu although the gain you get there is limited. Ever see a 1000+ page book on Microsoft Word or (worse) try to explain to somebody how to use mobile apps for the first time (eg. "click on the hamburger icon; huh?", "swipe down; ... doesn't work ...; maybe when you swipe down you have to start above the edge of the screen...") and you realize that there are limits to how many things you can present on a screen and how well people can find things.
When you are talking to people you can use a word which is ambiguous and people figure it out most of the time and if they don't figure it out you can have a conversation with them about it as opposed to a programming language compiler which typically give messages like:
Could not find or construct Composite[CustomDataType]. [error] [error] If CustomDataType is a simple type (or option thereof) that maps to a single column, you're [error] probably missing a Meta instance. If CustomDataType is a product type (typically a case class, [error] tuple, or HList) then probably one of its component types is missing a Composite instance. You can [error] usually diagnose this by evaluating Composite[Foo] for each element Foo of the product type in [error] question. See the FAQ in the Book of Doobie for more hints.
Until we accept that we can do fundamentally better and that we must we are going to be stuck having the same stupid conversations.