RIP Object Oriented Programming

Carnagie Mellon University has declared OOP dead

existentialtype.wordpress.com/2011/03/15/teaching-fp-to-freshmen/

How will Pajeet ever recover?

Other urls found in this thread:

eev
existentialtype.wordpress.com
youtube.com/watch?v=rX0ItVEVjHc
twitter.com/NSFWRedditGif

Only now they'll more Loo like Scala, which is compatible with their Javapoo

I hope we can have a mixture of good OOP and FP things. Pure anything can be huge unreadable/unmaintenable garbage.

>wordpress

must be a shit university run by fags

>Carnagie Mellon
>shitty

hopefully. it's nice to see newer languages like rust abandoning hard oo

seems to be what that user implied.

...

SCALA
C
A
L
A

>Carnagie Mellon University
literally who

>2011

Any good courses to learn functional/imperative programming online?

Coming from a student who only knows OOP and wants to learn other ways of programming.

Pic unrelated.

just make new page wen you want to make new class

Learn You a Haskell is a great introduction to Haskell.

It's available for free online.

Ops, misread your question, never mind...

Real World Haskell is a great part 2

Also available online

php did it too

>Carnagie Mellon University has declared OOP dead

i don't think OP has any reading comprehension

PHP is dead too

turboNEET

Functionnal programming is the future. Look at F#, its beautiful

hahah nice meme

actually its boring meme, 90% of web is still runing on php and will run for years to come my dude

PHP is to web what Java is to desktop, sadly

F#

PHP is legacy shit

It's the COBOL or C++ of the web

calling php shit won't make it go away

also if done right php can be helpful

also chosing one meme clusterfuck of language over another wont solve anything

The irony here is that Wordpress itself is written in OOP.

Functional programming isn't the direct opposite of OOP, but of imperative programming. Imperative programming operates on the principle that programs have a global 'state' which should be manipulated to produce the desired results, while functional programming attempts to avoid state and treat all data and program flow as interactions between functions. Having no state is often described as being "functionally pure" or "no side effects."

To use an example, consider possible programs in an imperative and functional style:

def x_plus_three(x):
y = 42 # this would be a side effect
# it's poor programming, but the language won't stop you
return x + 3

Algebra, while not technically a programming language, is indeed functional:

f(x) = x + 3

Notice that using algebra, you couldn't change the value of y from within a function that operates only on x. Purely functional languages are subject to the same constraint- in fact, they don't actually 'change' anything at all, they merely produce brand new outputs by performing calculations on their inputs. This prevents errors in case you didn't want y to become 42 or x to permanently increase by three.

As for OOP, it's just a means to reduce errors created by accidentally changing things you didn't intend to change. You might define y as a private variable in a class, meaning each object of that class possesses its own 'y' and only functions attached to that object can change it, for that object alone.

eev dot ee/blog/2012/04/09/php-a-fractal-of-bad-design/

What's the irony?

That's a strawman of both. Imperative programming basically means you tell the computer what to do. This includes procedural programming, which structures programs around procedures and OOP which structures programs around objects and messages passed between these. I can easily write C functions that have no side effects, just as I can write C functions that have. Even if they don't have side effects, I'm not really writing functional code.

Declarative programming is more of a high level description of what you want, instead of how the computer should do a thing. Declarative programming includes functional programming, which structures programs around function composition. A consequence of this is that you generally avoid side effects, but it isn't the essence of the paradigm. Other declarative (sub)paradigms include logic programming and query languages such as SQL.

Side effects aren't central, but some tend to encourage those more.

I wonder if a good way to teach for principles would be to have students write a small angularJs application that does all data binding and transformation with "filters", which are usually written in a pure functional style

could be, except web dev is gay

I think they should use jQuery and MongoDB so they will learn about webscale early on

i honestly wish functional programming would dominate. it would make programming even harder for shitty normalfags and pajeets, making people like us get the raise we deserve

Scala is fucking retarded and awful, but I still use it as my main language because it's way less broken and awful than all the other languages.

It's a huge step forwards, but some parts of it just makes me want to die, although it can also be a joy to program with

try haskell scrub

This. Haskell makes programming a joy. You no longer just write code, you breathe life into it. It's poetry. It's art.

F#

because OOP is too much for introductory course. rationale behind OOP only makes sense after a thorough understanding of imperative style and some experience with developing non-trivial software. that is what they actually did: move OOP class to sophomores(and later)

Cool nitpick, but actually the absence of side effects and global state is exactly what makes a piece of code functional.

I do write haskell, it's a great language, but I feel the type system offered by scala will eventually metamorphose into something beautiful rather than being the somewhat ugly duckling it is now.

Found the code artisan.

FP is a meme, its not even remotely useful for anything enterprise related.
Their only case of usefullness is scientific computation

>existentialtype.wordpress.com
>wordpress.com
>wordpress


Stopped reading right there.

pajeet detected

>2011/03/15
You're 5 years late, user. Clearly Pajeets didn't suffer because of that.

C++ to fuck off and die when ?.

t. extreme neet

In my first CS class we were taught O'Caml extensively, then C - the second year we did Java and F#.

OOP is long gone

...

read about data driven programming

youtube.com/watch?v=rX0ItVEVjHc

congratulations to them for making already useless and unemployable CS grads even more useless by teaching them a meme paradigm

try and argue with my point, I dare you; you can't, FP is a niche that won't get you hired anywhere

>computer SCIENCE should be about training code monkeys

>his CS degree wasn't at least 80% about Java
enjoy being unemployed

they did it in my university too. They moved java in the second year with oop. Don't know if they teach imperative the first year tho.

Computer "science" doesn't use the scientific method

What academia does and what the industry does are completely disjunct. When was the last time you saw haskell code in production?

> CS degree
> thinking about teaching a language, not a paradigm
enjoy being an unemployed ignorant fagget

It's Saturday today, so yesterday

Nice meme

really, if an university teach you only how to do things and not why do things and the reasoning behind it, its a failure as university and you are a failure as graduate.

If you know C# or Java then you probably understand imperative programming too since they aren't purely OO like Smalltalk or Eiffel.

Another person had said this but I would recommend Learn You a Haskell too.
Bear in mind it's REALLY different from what you are used to, and it might take some time to get into the habit of thinking functionally instead of imperative.

I think 99% of universities in the world teaches you basics and fuctionalities of a paradigm, through a language of course.

What was implying it's the exact opposite of what you're saying

these 'code monkeys' will actually land a job unlike you FP weenies who prefer to jerk off to your favourite LISP dialect

Saying Java and C# are dead is like saying
>being on Sup Forums isn't a waste of my time
Even if you dislike the laungauges with every bone in your body, saying they are dead is fucking stupid.

i know, but this place is great for laughs. i mean look at it.
c# is great for making programs really fast, especially when you use blend.
Java, tough i really despise it, i know it was great in the past, but c# is at this time better. C# can be compiled to c++ and thus c# programs can now be made to run on linux and apple products.

K. Anywho, I'll just keep on making my 6 figure income building the web in php.

NO FOR FUCK SAKE

C# cannot be compiled to C++.
C# can be compiled to CLR, and Visual C++ can also be compiled to CLR, which makes the two languages cooperant.

C# can run on Linux or Apple only because of libmono.

C# and Java are really the same as proof of concept, but Java has been made with certain design choices which sounded good when it was developed (back in the '80s).

Microsoft learnt from Oracle mistakes, and made a Java-alike language patching all the things in which Java was wrong

Don't waste your time

I'll keep coming

Wasn't it Sun back then?

yep, sorry

Learn fucking assembly. After programming in assembly, Haskell is like shitting in the streets.

It doesn't have to be x86. Actually I would recommend something simpler like Z80 or ARM and make programs that run on a device you own.

shut the fuck up, ASM fedora meme

Agreed. That's why I like Clojure so well.

Scala ocaml

Get over it, imperative programming and OOP are here to stay, and functional programming will never be more than mere toys in the grand scale of things.

You're right that imperative programming and top are here to stay.

But you're wrong in your appraisal of functional programming: Scala, Haskell, Clojure, and ML's are part of a giant comeback for functional languages. C++ added functional features. Rust has functional features. Java added functional features.

The functional languages are changing the way we program, for the better. Purity is usually bad in any paradigm. We should use what works, and stay away from dogmatic views.

>AngularJS
>MongoDB
Just what undergrads needed, more useless meme tools.

Everyone says that FP languages are making a comeback, but it never ends happening.
And just because other languages add FP features in them, doesn't mean they end being actually used.

Also
>Rust

asm is ugly af

If you don't use map, lambdas, folds/reduce and so forth please kys before I have to read your shit code

I don't use them because I never had the need to use them.

Neither does theoretical physics or mathematics.

C++ has added functional features.

Clojure is actually becoming popular. This is all stuff happening right this second.

Clojure is actually a nice language though as opposed to Scala

Yeah...Scala is very complex, and I'm really not a fan.

All this means is that FP fanatics are taking over language committees. How much of that are things programmers who like that language actually wanted and how much of it is them sticking their own pet ideas in or trying to "attract" FP programmers?

Adding "lambdas" to C++ and Java seems like that.

These features are being used today in production code, and are valued.

It's no coincidence that OOP backwards is POO.

>map, lambdas, folds/reduce and so forth please kys before I have to read your shit code
your shit code must be really efficient..
where are the days when programmers actually had to make sure their programs would not use to much ram, making sure they didn't take up more space than needed on a hard drive, and above all, making sure the code runs efficiently and uses as little of the processor as possible.

Now all is see are basic programs that require a shitton of everything.

>opinions of professors on the software industry
>relevant

Pick one.

professors in universities are most of the time bad programmers themselves that could not handle the software industry. There are exceptions. And sure you can learn the basics from a bad programmer, but don't expect them to say the most sensible stuff.

How many times have you poo'd in the loo today, my Pajeet?

111,111,110 x 0?

1. Optimize the algorithm first.
2. Programmer time is more valuable than machine time.
3. Shit software design is shit software design. It doesn't matter if it's Java, C, or a functional language.
4. map/fold/reduce does not necessarily increase any runtime, but abstracts over iteration.

>2. Programmer time is more valuable than user time.
That's what you're really saying.

Nope. Programs should meet design requirements. User time is a design requirement. But the bottleneck in a program isn't a fold. If you think so, you're retarded and should learn about algorithmic complexity.

>User time is a design requirement.
And how do you think you meet that design requirement?

>But the bottleneck in a program isn't a fold.
Allocating instead of reusing storage could be a bottleneck.

>how do you think you meet that design requirement?
By carefully choosing algorithms. Most applications aren't doing cutting edge shit that requires 0% waste.

>Allocating instead of reusing storage could be a bottleneck
>could be
Sometimes, and then you should optimize appropriately. Clojure lets you use transients to fix this.

Also: most applications aren't for desktops these days. If your customer is an enterprise client and the application you're building **has to** scale anyway, then it makes sense to build a scaleable solution in a language you can be more productive in.

>OOP
>dead

kek. just because retard shitters graduating from school can't design for shit doesn't make OOP dead.

>state

so if your meme paridigm has no sense of state, how do you solve state problems?

with shitty retarded monads which are LITERALLY IMPERITIVE?