The "but what does it do" effect: how often do you have trouble understanding what stuff does?
-
The topic of reading a product description and still being left wondering what exactly it does has been brought up before.
While the most egregious cases are the ones caused by an excess of "marketing-speak", I think many are simply due to a failure to explain things to outsiders.
A particular case is products that bundle related features. For example, ASP.NET is always described simply as a "web framework". This just tells you that it's a thing intended for you to make websites with, which could still be a million different things. Or anything described as a "game engine", which can range anywhere from just being a simple wrapper around OpenGL and input events to all sorts of stuff like physics, AI, level design, etc.
In those cases, since there is no name that can fully describe the product, the website should have a small blurb to do the work - but in my experience, it often doesn't.But maybe that's just me. I'm kind of obsessive about wanting to know exactly how things work before using them, while simultaneously lacking the will to actually sit down and read a bunch of documentation about them.
I've been thinking about starting a wiki dedicated to describing software products in a simple way - from the point of view of what "services" it provides for the user or other software. The idea being it would be the default place you look at when you hear a new name. Do you think there is a demand for that?
-
@anonymous234
wtf
is operating in this space.
-
I support the idea, but, I do just wonder, to what extent does Wikipedia already fill that role? Yes, there are a lot of times I don't understand what a product does, but usually I figure if I needed it, I would understand what they were talking about. The times when I might need it anyway, Wikipedia generally goes into more detail. But some of the more obscure products might not be listed there.
-
@anonymous234 said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
I've been thinking about starting a wiki dedicated to describing software products in a simple way - from the point of view of what "services" it provides for the user or other software.
Too often there's a reason for the sparse description: the emperor has no clothes.
-
@chozang Good point... Wikipedia actually fills the role pretty well. Aside from not being restricted to "notable" software, I think maybe a dedicated site could standardize the structure of the pages a little better (Wikipedia articles are a bit of a mess), keep the descriptions a little shorter, and maybe use more technical language...
-
My biggest "but what does it do" concerns object-oriented programming. Yes, I get that any problem you can solve in the procedural way can also be solved in O-O. But surely only a space alien would conceive a solution that way.
-
-
@da-Doctah I do think that OO lends itself nicely to some problem areas, but others, it just complicates needlessly and I'd rather not use it. Despite having been schooled when OO would solve every problem there is!
I much prefer pragmatic languages and platforms that lets you write functional, procedural or object oriented as you please. I wouldn't mind if I also could have logic programming thrown in there, but I am very rusty with logic programming.
-
@Carnage said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
@da-Doctah I do think that OO lends itself nicely to some problem areas, but others, it just complicates needlessly and I'd rather not use it. Despite having been schooled when OO would solve every problem there is!
I much prefer pragmatic languages and platforms that lets you write functional, procedural or object oriented as you please. I wouldn't mind if I also could have logic programming thrown in there, but I am very rusty with logic programming.Augh,
logic
as inladder logic
? Augh. I mean, I think there's a CPAN module for that.Augh.
The Drum instruction simulates an electromechanical drum sequencer,
using either a Time Based or an Event Base sequencing strategy.Each Drum instruction is capable of sequencing through 1 to 16 steps
and turning ON as many as 16 outputs in a user defined pattern.
Outputs can be either physical outputs or internal control relays.This is where we're getting for-case loops from folks
-
@Gribnit No, logic as in Prolog, Datalog and it's ilk. It's been ages since I did any PLC stuff too now, and I don't want to fiddle with it terribly much.
-
@Carnage okay well then PERL again. Didn't find ladder logic on CPAN but there's a ton of predicate solving stuff. Of various ilk.
There's this:
Might also observe that almost any language is multi-paradigm if you abuse it hard enough. But if you want your syntax hairified enough to support it all at once about the same you want PERL.
-
@da-Doctah I don't even dare trying to explain OOP.
(But seriously, it's a bunch of theoretical models made by people in the 70s that got mixed and corrupted over time by people using the same words to mean different things or just not caring and doing whatever works)
-
@da-Doctah said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
My biggest "but what does it do" concerns object-oriented programming. Yes, I get that any problem you can solve in the procedural way can also be solved in O-O. But surely only a space alien would conceive a solution that way.
I find it amusing to read this comment. I am by nature a procedural programmer, because when I learned programming it seemed more intuitive to me. But then when I started professionally programming, ~10 years ago, it was suggested to me that only dusty old relics did procedural programming, which was only half a step up from spaghetti code at best.
-
@chozang Isn't "OOP programing" 99% procedural programming anyway? I mean you organize the functions and data in "classes" but the inside of the functions work the same.
-
@anonymous234 said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
@chozang Isn't "OOP programing" 99% procedural programming anyway? I mean you organize the functions and data in "classes" but the inside of the functions work the same.
Yes, nowadays most code is not 100% procedural or 100% OOP.
-
I was going to try to place assembly-style, structured, OOP, and functional approaches in a context around the larger conversation between imperative / declarative approaches. But that's hard.
Structured, OOP, and functional, over assembly-style imperative control of the computer, give advantages when scaling out, by providing improved organizational tools.
-
https://www.youtube.com/watch?v=Pr3SX5xwfh0
Light up the
skateboardweb
-
@da-Doctah said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
But surely only a space alien would conceive a solution that way.
OOP is a way of avoiding having a bunch of functions that all
switch
on atype
field (extracted from their first argument) as their main thing. A crude version of OOP can be simulated by keeping function pointers in the structure instead, but the OO language system makes that easier to set up and less obnoxiously intrusive.OOP is also a way of changing from
verb subject …
tosubject verb …
token ordering. With a little extra syntax (depending on language) that you mostly gloss over when reading the code.OOP (and OOA/OOD) solves some problems much more neatly than classical procedural code. Others, it makes worse. It's good for tackling data organisation, visibility and lifespan management. It's poor when you have very large amounts of data with a single basic structure.
OOP is orthogonal to the procedural/functional/logic programming distinction; it's about how the data and the operations on it are associated with each other rather than how the instructions to perform on the data are written down.
-
@anonymous234 said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
@chozang Isn't "OOP programing" 99% procedural programming anyway? I mean you organize the functions and data in "classes" but the inside of the functions work the same.
OOP is the advancement of data structures and functions that manipulate them to objects and behaviors that they have. It may seem like it has similar code but the paradigm is different.
-
@TwelveBaud said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
Light up the
skateboardwebThey really shouldn't put wheels on those snowboards. It's easy enough to crash as it is!
-
Let's try a thing. Tell me how good this description is:
.NET Framework
Short description:
A virtual machine with automatic memory management, and a set of language and system libraries written for it.
Slightly less short description:
.NET Framework is a system made of two parts:
- A Windows program that runs code in a certain format (called CIL), that is designed to be easily compiled to from multiple languages. It provides runtime services like memory management, a type system designed to support OOP languages, exception handling, garbage collection and security features.
- A set of libraries that run on that system to facilitate programming. These include are "language library" stuff like data structures, and object-oriented wrappers for Windows functions.
Extra info:
It's an extended implementation of the open standard ECMA-335 aka "Common Language Infrastructure", although the standard was created after the program and not the other way around. The extensions are mainly Windows-specific things [note: I guess that, I can't actually find a list of them].
It was created by Microsoft as a way to make Windows programming easier and more flexible. Therefore it is tightly integrated into Windows. Despite this, it also greatly facilitates portability to other OSs due to the programs being able to run in other implementations of the standard, such as Mono.
-
@anonymous234 said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
designed to be easily compiled to from multiple languages
That's the sort of assertion that always gets up my nose. The semantics they use (and the deep semantics of this sort of thing tend to show through) are only natural for a subset of languages, and the runtime is very much not neutral (they never are).
A simple example of what I'm talking about: supporting full multiple inheritance (such as in C++) is very messy indeed. You have to build a whole complex mechanism on top of the basic single inheritance facilities () rather than just using the built-in mechanisms directly. You can do it by greatly abusing interfaces and stuff like that, but then you'd be effectively walling yourself off from the basic runtime. As I said, messy…
-
@dkf Last I checked, "multiple" only means "more than one", not "every language that ever existed". When .NET was released we didn't assume it was meant for much more than Visual Basic and C#, and the multiple takes on C++ extensions show support for that thought.
While we would have benefited from the improvements in the C++ compiler, they also introduced a bug that prevented us from moving to VS.NET (2002). Sadly, I no longer remember our KB number. :(
-
@dkf said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
It's poor when you have very large amounts of data with a single basic structure.
- it can still do that, it just ends up looking like a structured solution...
-
@Gribnit Not really. You can do trickery to pretend, but the fundamental lifetime issues (i.e., the data storage has a lifespan other than the modelled contained object) will cause you trouble. Or you do different bookkeeping to allow an object to have its guts ripped out from beneath its feet, but then you get a whole slew of “interesting” failure modes. The only thing that really works is having the whole storage be a single object, and then you've not really gained anything from the objects and classes.
This sort of thing is one reason why ORMs are always capable of only making imperfect models of the database.
-
@dkf There was the very went nowhere JavaSpaces concept, and also the more went somewhere Actors notion, those allow matching object lifespan to persistence lifespan, if you want. And will accept the middleware to maintain the illusion.
But, eh, you probably would use one actual object which is the stream of data. No instances at all for the data for such a program, large data single structure - the structure is in the stream which is the only instanced datum, the real data are procedural on the stack.
If you have a type system rich enough, you can usefully separate the streaming of data and the structure of the data via generics or inheritance or composition or something, at that point you've gained something from classing the stream.
-
I was playing around with choco solver yesterday. It's decently easy to use, but the documentation is pretty bad, especially if you aren't clear on the terminology, and I must admit that most of my constraint programming knowledge and experience isn't academic (and more importantly, as we'll find out, pretty much none of my CS knowledge is), so the jargon throws me a lot.
In particular:
SAT constraints
A SAT solver is embedded in Choco. It is not designed to be accessed directly. The SAT solver is internally managed as a constraint (and a propagator), that’s why it is referred to as SAT constraint in the following.
Important
The SAT solver is directly inspired by MiniSat. However, it only propagates clauses. Neither learning nor search is implemented.
Clauses can be added with the SatFactory (refer to javadoc for details). On any call to a method of SatFactory, the SAT constraint (and its propagator) is created and automatically posted to the solver. To declare complex clauses, you can call SatFactory.addClauses(...) by specifying a LogOp that represents a clause expression:
SatFactory.addClauses(LogOp.and(LogOp.nand(LogOp.nor(a, b), LogOp.or(c, d)), e), model); // with static import of LogOp SatFactory.addClauses(and(nand(nor(a, b), or(c, d)), e), model);
Hmm...what's all this about then? Ah, "based on MiniSat." Let's follow that!
Introduction
Trophies MiniSat is a minimalistic, open-source SAT solver, developed to help researchers and developers alike to get started on SAT. It is released under the MIT licence, and is currently used in a number of projects (see "Links"). On this page you will find binaries, sources, documentation and projects related to MiniSat, including the Pseudo-boolean solver MiniSat+ and the CNF minimizer/preprocessor SatELite. Together with SatELite, MiniSat was recently awarded in the three industrial categories and one of the "crafted" categories of the SAT 2005 competition (see picture).
Eventually google and wikipedia provided me with enough information to figure out a SAT solver is.
In computer science, the Boolean satisfiability problem (sometimes called propositional satisfiability problem and abbreviated SATISFIABILITY or SAT) is the problem of determining if there exists an interpretation that satisfies a given Boolean formula.
OK, fine. I now I know that I don't need this thing.
-
@boomzilla Blort? You may need it for determining for instance if any winnable move exists in a randomly generated board.
-
@Gribnit yes but I don't need that.
-
@boomzilla What if you want to figure out whether you need it - y'know, rigorously?
-
@Gribnit I don't have a charge number for that and you can be damned sure I'm not doing it if I'm not getting paid for it.
-
@boomzilla said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
OK, fine. I now I know that I don't need this thing.
Didn't the following already tell you you don't need it?
A SAT solver is embedded in Choco. It is not designed to be accessed directly
-
@boomzilla said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
to figure out a SAT solver is.
Boolean satisfiability is one of these nasty problems that's harder than it looks; it's actually NP-complete. It's pretty trivial with a small number of constraints (boolean statements) and variables, but as the number goes up it becomes bastard hard. SAT solvers specialize in being relatively efficient ways to find if a system of boolean constraints has a solution at all (and, IIRC, to tell you what one such solution is, or perhaps all solutions).
The equivalent problem with integer variables is much harder (i.e., only just tractable at all). With function variables, it's crazy difficult.
-
Does anyone else remember when Amazon went completely touch controls for one iteration of the kindle and everyone wanted buttons back? Amazon's response? Haptic feedback response controls. That's the most fucking obtuse way of saying buttons you fucking mongoloids.
Fucking retards.
-
@DogsB
Ah, but venture capitalists don't invest in known quantities such as buttons. To draw in the venture capital, you have to be working in a cutting edge field, such as haptic feedback response controls
-
@dkf said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
@boomzilla said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
to figure out a SAT solver is.
Boolean satisfiability is one of these nasty problems that's harder than it looks; it's actually NP-complete. It's pretty trivial with a small number of constraints (boolean statements) and variables, but as the number goes up it becomes bastard hard. SAT solvers specialize in being relatively efficient ways to find if a system of boolean constraints has a solution at all (and, IIRC, to tell you what one such solution is, or perhaps all solutions).
The equivalent problem with integer variables is much harder (i.e., only just tractable at all). With function variables, it's crazy difficult.
Yeah, the whole point of constraint programming is to find solutions to NP-hard / complete problems.
-
@TwelveBaud said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
https://www.youtube.com/watch?v=Pr3SX5xwfh0
Light up the
skateboardwebWas silverlight as awesome as this ad?
-
@stillwater Not really. In theory, you could take your super-sexy WPF app (subject to security policy like no-file-I/O-except-isolated-storage and so on) and put it on the web, boom instant super-sexy website! The death of Flash is coming, to be replaced with Windows apps in browser clothing! In practice, it was only significantly used for DRM-crippling media players like Netflix, and most WPF apps looked like ass -- and rightfully so; only stuff like the museum exhibits I work on need a totally custom UI.
-
@stillwater said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
Was silverlight as awesome as this ad?
Meh. It lets you make webapps that look kinda like native Windows apps, except that they're restricted to a browser's content frame. It also doesn't work in Chrome[1] or Firefox[1] nor in IE's in-private browsing mode[2].
[1] It shows a fancy "you need Silverlight!" error message.
[2] You'll get a more obscure error message.
- First, you'd need "Silverlight for Developers" to (hopefully) get more details about the error message. (That's what the page that that URL links to says.)
- Second, Silverlight apparently needs access to your computer's file system beyond the sandbox provided by In-Private Browsing mode in Internet Explorer.
-
@DogsB said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
Does anyone else remember when Amazon went completely touch controls for one iteration of the kindle and everyone wanted buttons back? Amazon's response? Haptic feedback response controls. That's the most fucking obtuse way of saying buttons you fucking mongoloids.
Fucking retards.
I guess it depends on how you define "button" - i.e. if you only think of hardware or also include software buttons.
-
@stillwater said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
@TwelveBaud said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
https://www.youtube.com/watch?v=Pr3SX5xwfh0
Light up the
skateboardwebWas silverlight as awesome as this ad?
MORE awesome than this ad.
-
@stillwater It would have been if it had come like 10 years earlier.
-
@djls45 said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
webapps that look kinda like native Windows apps, except that they're restricted to a browser's content frame
Microsoft going for a bite of that rich and flourishing market of XUL applications.
-
@TwelveBaud said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
and most WPF apps looked like ass -- and rightfully so; only stuff like the museum exhibits I work on need a totally custom UI.
I shake my head every time this happens. A good WPF app does almost no customization of the UI. WPF is really good at really boring, generic apps.
Silverlight let you actually have significantly richer experiences than anything else has provided to this date, but the tendency has been to move toward less features rather than more on the web.
-
@Magus said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
@TwelveBaud said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
and most WPF apps looked like ass -- and rightfully so; only stuff like the museum exhibits I work on need a totally custom UI.
I shake my head every time this happens. A good WPF app does almost no customization of the UI. WPF is really good at really boring, generic apps.
There don't seem to be many good WPF applications out there, then. The major sales point of WPF was always making applications that don't look like Windows applications, thus throwing out all of your knowledge of how they should work. :(
-
@Parody said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
@Magus said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
@TwelveBaud said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
and most WPF apps looked like ass -- and rightfully so; only stuff like the museum exhibits I work on need a totally custom UI.
I shake my head every time this happens. A good WPF app does almost no customization of the UI. WPF is really good at really boring, generic apps.
There don't seem to be many good WPF applications out there, then. The major sales point of WPF was always making applications that don't look like Windows applications, thus throwing out all of your knowledge of how they should work. :(
WPF had some very interesting third party controls from Infragistics and other vendors. It was very nifty and looked polished but I was told to stop working on a POC and instead add functionality to a legacy app which was WPF but ran in a browser. Looked like dumpster fire and felt like dumpster fire. The colors and the way they were rendered are still etched in my retina. Fucking painful. I've heard good things about UWP but no idea how many Line of Business applications are written in it.
-
@boomzilla said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
Yeah, the whole point of constraint programming is to find solutions to NP-hard / complete problems.
In general, no. They're also the engines that power stuff like GUI and web layouts. They're finding solutions to potentially very hard problems, yes, but the point is finding the solutions and not that the problems are hard.
-
@stillwater said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
I've heard good things about UWP but no idea how many Line of Business applications are written in it.
Given that Windows 10 only recently passed Windows 7 in install numbers I'd think it'd be pretty small, but I don't know the split between consumer and enterprise.
I do know that the last BigCorp I worked with had no intentions of using it; their "desktop applications" were either WinForms, Excel, or web.
Feel free to take as many grains of salt as you need.
-
@dkf said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
@boomzilla said in The "but what does it do" effect: how often do you have trouble understanding what stuff does?:
Yeah, the whole point of constraint programming is to find solutions to NP-hard / complete problems.
In general, no. They're also the engines that power stuff like GUI and web layouts. They're finding solutions to potentially very hard problems, yes, but the point is finding the solutions and not that the problems are hard.
Maybe people use it for easy stuff like that but it's not what solvers like the one I was looking at were made.
-
Silverlight was awesome, and although you didn't see it on public web sites very often, there were a ton of internal business apps built on it. Deployment was easy because it was just a web page so you didn't have to install to everyone's machines, and you had a limited ability to share libraries between Silverlight and .NET. The tragedy was people kept relating Silverlight to Flash, so when everyone decided Flash was bad, Silverlight became collateral damage.