If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

Comment

There is a very strange trend towards specialisation that is very new. It used to be that all distros offered tweaked KDE and GNOME desktops for the user to choose. Now it seems like each distro wants its own desktop in order to provide a certain kind of experience.

Comment

I don't get why do people have something against OOP? Is it something in the linux culture to hate modern programming practices? If it's not assembly you're not man enough or what?

OOP has been eliminated from the introductory CS curriculum at Carnegie-Mellon in favor of an introductory course to functional programming. They say that OOP "is eliminated entirely from the introductory curriculum, because it is both anti-modular and anti-parallel by its very nature, and hence unsuitable for a modern CS curriculum". And this is but one of the many criticisms of OOP.

Comment

OOP has been eliminated from the introductory CS curriculum at Carnegie-Mellon in favor of an introductory course to functional programming. They say that OOP "is eliminated entirely from the introductory curriculum, because it is both anti-modular and anti-parallel by its very nature, and hence unsuitable for a modern CS curriculum". And this is but one of the many criticisms of OOP.

Comment

I can't believe that they were not teaching FP before this. They should have been teaching all three alongside each other.

Yeah, well... What I find truly 'disturbing' is the whole "...because it is both anti-modular and anti-parallel by its very nature, and hence unsuitable for a modern CS curriculum".
I'd think maybe the anti-parallel argument extends more generally to imperative programming, but they say that this is not the case; the problem is OOP.

Comment

Yeah, well... What I find truly 'disturbing' is the whole "...because it is both anti-modular and anti-parallel by its very nature, and hence unsuitable for a modern CS curriculum".
I'd think maybe the anti-parallel argument extends more generally to imperative programming, but they say that this is not the case; the problem is OOP.

well, they aren't so far away fropm truth as it seems at the first look. and i say that as someone quite oop affine.

how powerfull oop is and allows for simple and elegant constructions, it also allows for more bad designs if not used right than C ever allowed. though, it is something one may get only the chance to see this in larger projects.

though, there are various attempts in cutting down a lot of that power to put the developer back in line... as far as i have seen with very very bad results. leads to such bad though designs like java, where features where cut off, claimed they are not needed and make things worse and then you start doing ugly things around just to compensate for that.

though, most common devs won't observe this. they actually indeed profit from this reduced modularity and features because they were never able to handle it. and this closes the circle to the thesis of that announcement

though the funny thing is: i always tended to code oop style, even before i heared about oop the first time in my life, while coding in C

edit: just a very small example about how oop can reduce modularity by its nature:
while using C you have access to every method / module (what ever you define as a module) you can restricte in oop things very easy in such a way, that you totally lose all modularity. you declare fields and methods private or protected etc. thinking of controlling bad usage of your design, and end up often cutting down all roads of an efficient and effective way of modular extention or integration.

what i mean is, that you have far more to plan into the "future" to not lock down future code development than in most other "styles" and it tends to overcomplicate things.

Comment

OOP has been eliminated from the introductory CS curriculum at Carnegie-Mellon in favor of an introductory course to functional programming. They say that OOP "is eliminated entirely from the introductory curriculum, because it is both anti-modular and anti-parallel by its very nature, and hence unsuitable for a modern CS curriculum". And this is but one of the many criticisms of OOP.

Anti-modular? Surely they must be joking. When you're modeling objects you're breaking your program up into bits that are serving individual functions with intent for designing things so that you can just take the class out and use it elsewhere and use polymorphism to fit it to your own uses and otherwise. I mean modularity is kind of the entire point behind OOP.

As far as anti-parallel goes I strongly disagree here too because parallelism is more a function of imperative languages themselves as stated by Sergio, and with languages beginning to pick up async keywords and such this issue becomes a whole lot smaller because you're no longer having to play games in that regard. Also I fail to see how OOP makes it harder as opposed to easier, at least compared to other imperative programming styles. Again you're breaking things down into components which is going to make work as split up and as isolated as possible, which makes things easier.

I will however grant that functional languages do have a bit of an edge in parallelism because everything is const but these aren't reasons.. they're lies.

Comment

Anti-modular? Surely they must be joking. When you're modeling objects you're breaking your program up into bits that are serving individual functions with intent for designing things so that you can just take the class out and use it elsewhere and use polymorphism to fit it to your own uses and otherwise. I mean modularity is kind of the entire point behind OOP.

As far as anti-parallel goes I strongly disagree here too because parallelism is more a function of imperative languages themselves as stated by Sergio, and with languages beginning to pick up async keywords and such this issue becomes a whole lot smaller because you're no longer having to play games in that regard. Also I fail to see how OOP makes it harder as opposed to easier, at least compared to other imperative programming styles. Again you're breaking things down into components which is going to make work as split up and as isolated as possible, which makes things easier.

I will however grant that functional languages do have a bit of an edge in parallelism because everything is const but these aren't reasons.. they're lies.

Good post. I found the wording curious myself. OOP may have its pitfalls but to call it anti-modular and anti-parallel in its "essence" is, indeed, a lie.

how powerfull oop is and allows for simple and elegant constructions, it also allows for more bad designs if not used right than C ever allowed. though, it is something one may get only the chance to see this in larger projects.

The ability to shoot yourself in the foot doesn't inherently make things bad, if that was the case we should never have developed vehicular transportation and should all be walking everywhere.

though, there are various attempts in cutting down a lot of that power to put the developer back in line... as far as i have seen with very very bad results. leads to such bad though designs like java, where features where cut off, claimed they are not needed and make things worse and then you start doing ugly things around just to compensate for that.

That would be Java and their asinine concepts of how a language should be designed, nobody else significant not even python really ascribes to that ideology, and particularly not C++ and C#.

though, most common devs won't observe this. they actually indeed profit from this reduced modularity and features because they were never able to handle it. and this closes the circle to the thesis of that announcement

Sure and we all benefit from walking everywhere, but it doesn't do what we need to get done.

edit: just a very small example about how oop can reduce modularity by its nature:
while using C you have access to every method / module (what ever you define as a module) you can restricte in oop things very easy in such a way, that you totally lose all modularity. you declare fields and methods private or protected etc. thinking of controlling bad usage of your design, and end up often cutting down all roads of an efficient and effective way of modular extention or integration.

what i mean is, that you have far more to plan into the "future" to not lock down future code development than in most other "styles" and it tends to overcomplicate things.

I don't think you understand what the word Modular means, as having a bunch of little black boxes that interact with each other is the very epitome of being modular

Comment

in truth the whole issue with OOP can be that in order to do things right you have to make things into modules, which can turn something that would otherwise be relatively simple into something very very complex. This is not to say that there aren't benefits in the long term to doing so but it can increases code complexity and provide more opportunity for bugs because of the increased line count for trying to force it, and it of course costs more development time to bring up. Again I go back to the chatbot example I used earlier, using a non-OOP imperative approach to this makes writing it trivial, and in most cases relatively easy to follow, however... you get extensibility and modularity benefits in the long term from going the OOP route even though it makes designing and writing said bot a pain in the neck. Seriously just think about trying to design a OOP IRC bot and compare that to thinking about designing it in other imperative techniques... It's multiple orders more complex.

Also some use cases don't really benefit from it, scripting for instance is naturally antagonistic to OOP due to the sheer simplicity that is required, and even if you did try to make OOP scripts there wouldn't really be much if any benefit to it.