News for hackers. Stuff that matters.

jshowa1

Re:OOP Is Dead, Long Live OOP on Thursday October 18, 2018 @07:30PM (#18253221)
What about it?
Re:OOP Is Dead, Long Live OOP on Thursday October 18, 2018 @07:11PM (#18253130)
So you don't really know what I was originally talking about yet you continue to act like you do? My point was in a response to the OP's implication that somehow the original OOP literature was perverted by misunderstandings and wrong implementations of the current generation, as if the original OOP documents were somehow "pure".

I pointed out that just because the literature is original doesn't mean it can't be superseded. I gave generics as an example that was later implemented in OOP languages and fail to see how implementing these perverted the original intentions.

I was then told that OOP intentions were originally meant to be dynamically typed and that the static typing of generics was meant to put it towards the original intentions of this dynamic structure (this is untrue because Alan Kay just didn't like static typing, but didn't make dynamic typing a requirement for OOP). Upon further research, the earliest OOP concepts were explained in the 1960's and the first OO language (Simula) was statically typed and a superset of ALGOL 60 which was a language made in 1960, with Simula following in 1965. Smalltalk came in at 1972 (around the time of generics) and is considered the definitive OOP language which is dynamically typed.

So its hard to say, without direct sources, what the original intentions of OOP were, but considering OOP appeared before the first languages that contained generics (i.e. 1970's), generics is an idea that superseded OOP.

Considering the utility of generics, its clear that later concepts that were added to OOP did not somehow perverse the original literature.

So we've established the following: 1) The earliest OOP language (Simula) was statically typed. 2) Generics came in after Simula 3) The original intention of OOP could probably be attributed to Alan Kay, who created Smalltalk, but it borrowed heavily from Simula. And while Alan Kay coined the term OOP, the idea was not created in a vacuum as OOP concepts predate Smalltalk.

Hopefully this provides some clarification. But my guess is people will continue to misinterpret what I meant.

Re:OOP Is Dead, Long Live OOP on Thursday October 18, 2018 @06:14PM (#18252624)
>Maps can be represented 1:1 as e.g. JSON. Any JSON data is basically a big map data structure. It's one function call instead of hours of writing ORM classes or custom serialisation methods just to send some data over a wire

Again, you don't write the ORM classes, the framework does it for you.

And what you advocate is essentially sending a table over the network. So, what happens if your data within that map is complex? Are you suggesting to send every piece of a complex data type over the wire in separate chunks? If so, how do you relate it in the application? You still to make some sense of that JSON data in your application. Having it in a big map structure is akin to a god object.

I my mind all you're doing is masking objects in different concepts just because you don't like using classes.

Re:OOP Is Dead, Long Live OOP on Thursday October 18, 2018 @04:04PM (#18251662)
A poor model for computation that is pervasive in the industry. Poor models usually don't become pervasive.
Re:OOP Is Dead, Long Live OOP on Thursday October 18, 2018 @03:57PM (#18251606)
My point is that earlier OOP documents did not implement generics.

When they were finally implemented in OOP, it superseded the original intentions of OOP.

The question is, are we now supposed to remove generics because they don't conform to the early literature of OOP?

Looks like the OOP edited his comment though, so my point is irrelevant.

Re:OOP Is Dead, Long Live OOP on Thursday October 18, 2018 @03:51PM (#18251555)
Except for the fact that objects can be serialized and ORM's exist to convert your data into OOP. How do you think Entity Framework works? How do you think Rails works? You can build almost an entire ORM from a database without even writing any code in Entity Framework.

> And if you want to use other people's objects (say from a library) you first have to make a layer that translates them from your own objects

Funny, I've been using .NET framework objects without any type of translation. And the point is to use inheritance to mitigate the translation.

Don't blame the model for its poor use. If there's no way to get the data you need, then that means the class was designed so you didn't actually need it or there are other ways to get it (i.e. through an interface).

>Clojure gets it right and that's what I use.

Except Clojure uses OOP principles and even admits to saying it uses immutable objects in the form of interfaces. Interfaces are essentially stripped down abstract classes. How this is not a subset of OOP, I don't know.

I'm sure Clojure is great, but can you write interactive applications with it without integrating OOP libraries?

Re:OOP Is Dead, Long Live OOP on Thursday October 18, 2018 @02:18PM (#18250719)
Just because prior literature exists, does not mean it should not be superseded. For example, generics wasn't even a thing when OOP originally started and yet LINQ and basic list ADT's wouldn't be as powerful without it.
Re:OOP Is Dead, Long Live OOP on Thursday October 18, 2018 @02:14PM (#18250688)
How has the church of OOP failed? Nearly every used language is based almost entirely on OOP. OOP makes organizing software and code reuse incredibly easy. The only real downsides to OOP is that its arguably slower and has more overhead. But that's only a problem in niche applications (ie. embedded apps).
Companies have very poor development processes and scheduling which is what makes coding, in any language or framework, difficult because half the time you don't even know what you should be writing. Even worse, asking others is often hit and miss because some co-workers, who should know, don't make an effort to define what's meant by certain requirements specific to a problem domain. This often leads to shipping incomplete products that you have to "fix" after deployment because you didn't have enough time to implement features, didn't know features were needed, or the features weren't well defined. In the meantime, project management thinks the project is done and is piling more projects on you while you play catch up. I haven't figured out a good system to handle this and even if I could, it requires buy in at multiple levels and consistent application. If you've ever done group work in college, doing this is almost impossible.

In short, work is just like college group work. One person does 90% of the work while the others do about 10%.

Nearly all security vulnerabilities are published in blog posts at some point because most companies deny a problem even exists or needs to be fixed. Sometimes they just don't even respond and the person who discovered the vulnerability publishes anyways as a sort of "punishment" for the companies lack of response.
Not sure how this is much different than posting a blog post about it.
Re:Introduction to Differential Equations (2008) on Tuesday October 16, 2018 @05:53PM (#18233626)
I'm aware. Examples are given to demonstrate abstract concepts. However, that doesn't preclude you from needing to learn the abstract concepts eventually. Otherwise, you go back to knowing times tables for 2's and 3's, but not n's and m's.
Re:Introduction to Differential Equations (2008) on Tuesday October 16, 2018 @05:50PM (#18233604)
Except for compounding interest, percent change, percent difference, multi-variate statistics... I'm quite dumbfounded to read this comment considering nearly all of finance is done through computers. Computers need algorithms in order to make predictions and algorithms are glorified formulas.
Re:Introduction to Differential Equations (2008) on Tuesday October 16, 2018 @05:46PM (#18233584)
>My point wasn't that FSMs are useless.

No, but your general point was that classes aren't taught in a beneficial manner, when in fact they are and are often directly applicable to what you're doing. It may be abstracted away to the point where you think you aren't using them, but you very much are. And this illustrates the point of not needing to know the how and why something works and why its often less beneficial to do so because knowing more detail often leads to more confusion.

>While you're clearly proud of this fact, I'm not sure why that's relevant here?

It was simply an example of a direct application of something I learned in college and is thus evidence that what you learn is useful and applicable. I mentioned that it helped a senior engineer because learning such abstractions can make experience irrelevant. You were the one that seemed to bring pride into the picture.

> This is basically the exact opposite of my complaint. I was complaining that differential equation courses essentially focus on teaching a bag of tricks for solving specific types of equations.

So why even mention that things like differential equations are taught in a inadequate manner?

> the effort many students give to college is less than average

Yes, its quite possible that student effort does not follow a normal distribution. All I can say is, from my experience, it was high. Do I have data to back this up? Not rigorously, but given the numerous complaints about how college isn't teaching things right and that professors and universities aren't stupid, I'm just assuming its lack of effort, priority, or skill.

>But surely you must agree there is room for improvement, right?

Be careful with this line of thinking. You could say the same thing to assume improvement must be made in the way a course is taught, when its really another factor that's the cause of peoples complaints that isn't mentioned (i.e. effort, professor, lack of skill, etc.)

> Given that you made no attempt to substantiate your opinion - it seems to me that the logical thing to do here is to side with the majority.

You haven't done the same either. And the most logical thing is to abstain from siding with any position until more evidence is present. After all, the majority of people believe in a religion as taught from selected texts, of which such texts have numerous factually incorrect statements in them.

Re:Introduction to Differential Equations (2008) on Thursday October 11, 2018 @05:08PM (#18197050)
I've used state machines on the job. In fact, entire architectures are designed around finite state machines. I've also solved a complex logic problem a senior engineer couldn't solve by implementing K-maps.

And of course my opinion is in the minority because nearly everybody under the sun complains about how useless college is and how things should be taught with more application without realizing that things are taught minus application for a reason (so that you can apply things generally instead of specifically) and that many of the hot technologies are just re-purposed PhD research.

Also, the effort many students give to college is less than average (at least from personal experience going through a private engineering school) and probably for most college students. So their complaints are really just the result of laziness and lack of responsibility more than anything.

A minority opinion does not make it invalid or worth less, unless you have evidence to discredit it.

Re:Introduction to Differential Equations (2008) on Thursday October 11, 2018 @10:19AM (#18193730)
This is like saying that if I convert mph to m/s then it's not a speed anymore. It's still a differential equation, just in a different domain because you can convert back from the s-domain into the time one.
Re:Introduction to Differential Equations (2008) on Wednesday October 10, 2018 @05:16PM (#18188980)
Laplace transformations are differential equations so I fail to see your point. They're just in a different domain. However I do see your point with numerical methods since most complex problems are simulated anyways through simulating software. So in essence, the application becomes pointless because its at such a higher level of abstraction that you don't even have to think about it. You just punch in some numbers and hit analyze and the computer does it all for you.
Re:Introduction to Differential Equations (2008) on Wednesday October 10, 2018 @05:13PM (#18188954)
The problem is math is entirely abstract. So you must learn the abstraction before applying it. Otherwise, you learn how to add 2 + 3, but you don't learn how to add n + m.
Re:Introduction to Differential Equations (2008) on Wednesday October 10, 2018 @01:19PM (#18186970)
"Such a teacher will be successful if at the end of the course every one of his or her students feels they have taken “a good course,” even though they may not quite be able to pin down anything specific they have learned in the course."

Basically the equivalent of, if the course makes you feel good, then the course is good. Not something that I'd advocate.

By the way, a differential equation is simply an equation with a derivative in it. If you can't recognize that, then you didn't go far enough in math.

Re:Introduction to Differential Equations (2008) on Wednesday October 10, 2018 @01:16PM (#18186937)
You need to learn the math before applying it. You don't apply things that you don't understand.
Re:Introduction to Differential Equations (2008) on Wednesday October 10, 2018 @01:15PM (#18186926)
If you consider analyzing an RL/RC circuit as a "toy problem" then I guess you're right.
Re:Rethinking our human origins in Africa on Monday October 08, 2018 @11:13AM (#18168163)
Except the article still says its out of Africa, just not from a single region in Africa.
Re:Coders Automating Their Own Job on Wednesday October 03, 2018 @11:17AM (#18131011)
The problem is automation is never truly automated in most jobs. There's always things that go wrong, always changes being proposed, always explaining needing to be done. Sure, you may find it easy to automate a report or data entry, but what if that data changes or the format changes? Then you have to fix the code.

The code is almost never trivial either. It often involves integrating complex systems and making sure that they work which, if done right, involves writing several unit tests.

Using God is a poor excuse to determine ethics because there's no evidence one exists. It's especially a problem when you don't share the code because then, instead of creating improvement to the job for the company as a whole, you've written a pass to be lazy. The real job comes from supporting whatever you write to the masses. If you don't have any interest in that, you're simply selfish.

The problem is people react in different ways, but it seems like the most common way is to not tell anyone which in my mind is foolish because even if you do get fired, you've improved your skills enough to find a better job anyway. Not only that, I can just as easily come up with an example of someone getting promoted for automating job tasks.