4 ms·
<EDIT: I toned down the harshness.> Abstractions are key to every good design. Let me try to explain more in detail: Abstractions can be built in two ways, I
by morphir 17y ago
<EDIT: I toned down the harshness.>
Abstractions are key to every good design. Let me try to explain more in detail:
Abstractions can be built in two ways,
I top-down
II bottoms-up
A top-down approach is per SICP described as 'wishful thinking'. We simply assume we have the function. And then we drill down, and we let George (the programmer) worry about the implementation. Taking the UML approach is not necessary - traditional black box abstractions will suffice.
A bottoms-up approach or Domain Specific Language (DSL) is not very well supported among the typical boiler-plate languages today, small languages like scheme is perfect for DSL, because of its smallness.
You design top-down - and you implement bottoms up.
Naming functions is a art of its own and is key to good software engineering.
Personally I'm sick of programmers who don't understand the art of abstractions - as much as I'm sick designers who don't know what the limit of a computer, or the capabilities of their language.
A note on UML: Uml got one thing right, and that was the 'Use Case'. A proper use case forms the foundation of a good top-down design.
- wingo 17y agoI don't think Andre said that abstractions are useless. I agree with most of your other points, but it's difficult to get past the confrontational tone. Be more charitable :)
- morphir 17y agoForgive me, I see that I have miss-interpreted the article. (I skimmed it). Reading it again, I see that I do agree.
- deleted 17y ago[deleted]