Abstraction was always a way to keep the less educated programmers from knowing what really happens, by hiding things in the complexity. Have we deliberately limited the full capabilities of programmers in this fashion? You bring up an interesting topic.
Name:
HAX MY ANUS MEME FAN2008-04-27 21:13
More importantly though, abstraction means you don't have to fiddle with the details when doing the higher-order stuff. Hiding also means, in a way, making something automatic.
Also HAX MY ANUS
Name:
Anonymous2008-04-27 21:28
>>7
If you put the spoiler tag inside the sup tag, it won't show through like that.
HAX MY ANUS
Name:
Anonymous2008-04-27 21:31
/prog/
Name:
HAX MY ANUS MEME FAN2008-04-27 21:44
>>8
I didn't really mind but thanks. Good to know.
>>6
>Have we deliberately limited the full capabilities of programmers in this fashion?
I know you are trolling, but abstraction is not just a crutch for weak programmers. Notation in mathematics is another form of abstraction -- are you going to say that every mathematician who invented a suitable notation was not an EXPERT?
Computer software is built on many layers of abstraction.
These abstractions make the modern computer possible.
Name:
Anonymous2008-04-28 1:07
Abstraction in practice is too heavily tied to black boxes. Building things up in layers is fine, but not letting programmers look at what inside the layer below is not. Just because the code doesn't need to know the implementation details doesn't mean I don't.
MY ANUS WAS HACKED AND I ABSTRACTED MYSELF VIGOUROUSLY
Name:
Anonymous2008-04-28 8:28
Abstraction allows for much more useful optimization than trying to hand-squeeze every line of code. If all code uses a matrix library, or IO library, and that library is made faster, a shitload of programs become faster. Plus, the eyes of optimizing programmers can be focused in one place, combining ideas and efforts instead of everybody having a half-assed fairly quick attempt bolted in to their shit.
Name:
Anonymous2008-04-28 8:41
From SICP:
We conjure the spirits of the computer with our spells
Which means that as wizards we are immune to the failings of feebler minds.
Abstraction makes the implementation indepedent of the usage. So you can change your matrix class to store the information differently, and it won't matter to the program that uses it.
Name:
Anonymous2008-04-28 10:20
You might want to read SICP again.
Name:
Anonymous2008-04-28 11:40
Abstraction can in some cases make systems much more complex. Layers of Abstractions insulate you from the whole system which can be bad in a lot of cases. In learning especially I believe that abstract bullshite should be layered on after the underlying systems are understood. SICP is a good example of fundamental programming being taught then more layers added on as the book progresses. A lot of modern textbooks, especially OO ones, do not do a good job of this.
Hell A lot of modern OO textbooks are basically how to fit abstract pieces together without understanding what the fuck is going on.
Name:
Anonymous2008-04-28 11:47
>>28
You get abstractions all through the complexity stack. Even assembly language is an abstraction of machine code. But sometimes you need to break the abstraction because it doesn't do what it should do, or what you expect, or what you need.
Name:
Anonymous2008-04-28 12:06
abstract ur anus
Name:
Anonymous2008-04-28 13:48
Every programmer should take the time to know each layer of abstraction he is standing on, but to go back to assembly... lol
Name:
Anonymous2008-04-28 16:34
I like standing on the penises of past programmers and using the power of their abstraction to hax anii at an ever higher level.
Name:
Anonymous2008-04-28 18:11
>>27
Why the fuck are all you kiddie shits so afraid of complexity? Caches are complex, but add a hell of a lot of speed. So do JIT compilers, load balancers, prefetchers, threading on multicore, and all the other shit you're so fucking afraid of because of OMG CoMpexity.
Get the fuck off my /prog/.
Name:
Anonymous2008-04-28 18:15
>>33
also, yeah lol "COMPEXITY" whatever, fuck you too.
Name:
Anonymous2008-04-28 18:19
>>33 Why the fuck are all you kiddie shits so afraid of complexity?
My parents read me this post once when I was younger:
(not sure who's that guy. found it through links from a friend's blog, and since I knew too little about java or systems programming, I probably gave it too much importance. bleh, anyway it's a good post)
Name:
Anonymous2008-04-28 18:29
>>35
Holy shit, what a load of horse shit. The problem with that idiot is that he looks at all the fine-grained details and NEVER gets a big picture. He doesn't understand architecture nor organization at all. The only thing he knows is function-level algorithms and trying to peephole optimize. Managing complexity is NOT a difficult task if you've got your shit together.
Many systems NEED to provide a ton of functionality, monitor and report on itself, be runtime flexible and interchangeable without restarting, and all sorts of stuff that requires the addition of complex systems. Fuck, even on a hardware level, mainframe chips easily dedicate 30% of their silicon to monitoring and error conditions. But complexity can be easily managed if you simply develop your code from a big picture instead of trying to collide a mish-mash of shitty "optimized" low-level leaves-before-the-forest algorithms together and pretend it's a working system.
>>36
BTW, everything I've said applies as much to MMO servers as it does to banking systems and the like. It's not just ENTERPRISE FAGGOTRY that needs to manage complexity, bedroom hackers need to learn it as well as his shitty handling of his game shows.
>>35
Why did I bother reading that? It doesn't matter at all how many lines of code a program is. Say a 3000-line piece of Java code is equivalent to a 150-line Lisp package. If they have the same features and the same granularity of use and processing, it's the _exact same_ amount of organization and maintenance.
You don't maintain lines of code, you maintain code modules, APIs, data stores, features, etc. It simply doesn't matter how many lines each of those parts are, each "part" is one item in terms of complexity.
Name:
Anonymous2008-04-28 19:42
Stratification in THE ALGORITHMIC LANGUAGE LISP by the Sussman
It can prolong the development process. Abstraction should be used intelligently. If you want something simple that does exactly one thing. You could abstract this out to a more general case. In the event this general case will never be needed you are adding unneeded layers of abstraction.
A good example I got is certain types of creatures are immune to lava. You could abstract this out to a heat resistance property, and a function that gets the temperature around the creature. Then you could have say warm water that some creatures don't like and others like. Or even cold water that those fire immune creatures will react differently to. Abstracting out temperature effects on creatures can create a more involved system. Unfortunately what if the only wierd temperature environment you have is lava. It would be much simpler just to check for that simple case and react than to build layers of abstraction.
While the layers of abstraction are good from many perspectives with a time deadline and practical restriction on features sometimes it is better to just go the simpler and direct way.
Name:
Anonymous2008-04-29 6:27
>>47
Until you make a simple change, e.g. you split lava into hot lava and really hot lava. Then you have to rewrite everything, unless you properly abstracted it.
``In order to make a system that's robust, it has to be insensitve to small changes. That is, a small change in the problem should lead to only a small change in the solution.'' --Sussman, at the start of SICP lecture 3b
>>50
Because the party of characters may be required to throw down two switches that will cause the mysterious guardian statues to cast a freezing spell over the lava, however, the first spell will not be enough to allow the heroes to walk over the lava safely, thereby justifying the necessity for a "hot lava" and "really hot lava" status.
Problem solved.
>>56
Unless there is no mysterious guardian statues and lava is only needed in a simple way.
Name:
Anonymous2008-04-29 18:26
>>57
That's now how PROFESSIONAL J-RPG are done. Once they realize that their game will only waste 50 hours of the player's life, they throw in guardian status and lava of variable temperature in the game to match the 80 hours announced on the cover.
That's the true meaning of SCALABLE SOLUTIONS.
on this subject of this lava, i guess it depends just how much effort you want to put in and if it's worth it...
you could have a liquid object that has temperature, color, and whatever other properties u need that would cover the lava and really hot lava problem, but if u write a game that only needs one pool of lava, and the only time u see it is when chuck norris one-inch punches a man into it, whats the point?
the answer to all this abstraction nonsense is to write what is appropriate to meet the requirement in the specification you have been given.
Name:
Anonymous2008-04-30 5:51
>>60
What, you mean my ObjectFactoryFactory class is useless?
Name:
Anonymous2008-04-30 6:02
>>61
perhaps, but UrMumIsFat class still applicable
it would be selling computers without using some new alternative could never keep up with windows underneath it does make sense to have reusable chunks of logic you can pass about I know you were an anonix.