Conversation started Oct 24, 2016 at 23:03.
jrh
jrh
Oct 24, 2016 23:03
Just wondering, does anybody know of a Journal that publishes papers on programming paradigms? E.g., something that would have articles on functional programming, OOP, etc., I think that's something I'd like to read
I see a lot of blogs but I'm sort of looking for something more formal and academic
something that would go into the problems that some new programming style was meant to solve, and how it did it
I'd like to do some research that compares the goals/theory behind several different programming styles (OOP, functional, structured, etc.)
Oct 24, 2016 23:19
@jrh Something that you should be aware of: many of the new tools and techniques that are emerging in the existing language spaces are actually old ideas. Functional programming enhancements being added to languages like C# actually derive from McCarthy's Lambda Calculus in the 1950's.
jrh
jrh
Yeah, I was surprised when I was reading the wikipedia page on functional programming, it really is quite old
wikipedia in my experience is pretty weak when it comes to meaningful CS related articles
There's no dearth of technical papers. Read Okasaki's Thesis on Functional Data Structures, or get his book.
jrh
jrh
hmm, that's a pity that there aren't many papers. I've learned a lot reading papers on algorithms, I was hoping I'd be able to see something in the format of a new OOP concept to solve <whatever problem> like I've seen for algorithms.
This feels a lot more like a Stack Overflow question than a SoftwareEngineering question to me. Are you asking how to implement this? Or for design guidance? — enderland 5 secs ago
jrh
jrh
Oct 24, 2016 23:24
I will check those out, thanks
@jrh While OOP is quite useful, it's not all that remarkable from an academic perspective. At the end of the day, it's just a collection of code organizing principles.
If you're really interested in academic OOP, study Smalltalk.
That's the real OOP.
jrh
jrh
I'm kind of interested to know what the original design decision behind OOP was, i.e., something that explains what brought about the idea of taking the first parameter into a function and making the function a member of the type of that parameter
depending on how deep into the rabbit hole you want to go, you can always look at the citations in those papers Robert linked
and see what papers cite them - they are probably related to the subjects
jrh
jrh
I think I should probably try smalltalk, it might answer some questions, for whatever reason C# style guides/etc. don't quite give me a clear enough answer for what I'm looking for
I'll dig around, thanks guys
Oct 24, 2016 23:30
@jrh Are you referring to dot notation? f(x,y) --> f.x(y)
jrh
jrh
@enderland yeah, most of the books focus on the how, not the why, I'm mostly interested in the why
well, yeah f(x,y) -> x.f(y)
Dot notation is just dereferencing a member of a class. It's pretty much baked into class design. But you see its implications in, for example, method chaining in C#.
Where this is returned from the function, allowing you to dereference again.
jrh
jrh
Sure. e.g., structs in C use it to access data. Though I'm kind of curious about at what point they made the leap from "here's a group of functions that operate on structs A and B", to "these functions are now grouped with A, and they take in B as an input".
That's just the nature of classes and the Kingdom of Nouns. noun.Verb()
As opposed to Verb(noun).
jrh
jrh
Right, that's pretty much what I'd like to know, why noun.Verb instead of Verb(noun)?
Oct 24, 2016 23:35
@jrh there does need to be a syntactical distinction
Because a class is a noun. And you have to refer to the class first, unless you're working in an OO language that allows free functions like C++.
I think the latest version of C# finally allows such free functions. So you can now say Verb(noun) instead of StaticClass.Verb(noun) or noun.Verb()
jrh
jrh
Were these nouns introduced primarily to improve the problem of namespace pollution, though?
I guess I can follow that, it's better than GTK_DoStuff, though you might not need classes to fix that
All of the class ceremony in languages like Java serves mostly as scaffolding, documentation and encapsulation.
You can do the same thing in functional languages with much less (and arguably more expressive) code. But there are also far fewer programmers in the marketplace that will understand it.
You can find a Java programmer on every street corner. Lisp programmers, not so much.
jrh
jrh
Smalltalk and Lisp seem to be the ancestors of what I'm trying to research, I think I'll look into those next when I get some time.
Happy hunting.
jrh
jrh
Oct 24, 2016 23:44
I bought this book amzn.com/0201543303 but I was kind of disappointed that there wasn't more about the why of OOP; it makes sense since Smalltalk may have already made that case; though it was a pretty cool book that tells some interesting things about starting a new language.
@jrh "unknown binding" $700. better be bound in gold leaf
jrh
jrh
I bought the $2 version
@jrh Incidentally, Alan Kay (the inventor of Smalltalk) says: "Object-orientation doesn't mean what you think it means." lists.squeakfoundation.org/pipermail/squeak-dev/1998-October/…
Also, Object-Orientation in C++ is partly a response to the problem of scalability (in terms of writing code) in C. While you can certainly write large programs in C, C++ is specifically designed to facilitate such programs.
jrh
jrh
IIRC Bjarne mentioned that C++ was also intended to replace macros in C, and to improve static type safety.
which is naturally related to the scalability of the program
anyway, thanks again guys
 
Conversation ended Oct 24, 2016 at 23:51.