5 ms·
This, but for software UI/UX. Anyone want to put me out of a job?
by JeffreyKaine 11y ago
This, but for software UI/UX. Anyone want to put me out of a job?
- seivan 11y agoDo you write your UI to production or just define it in Photoshop?
- JeffreyKaine 11y agoI "just" define it in sketch. To be clear, I'm sure you didn't mean to put down the role of design in building a successful software product, but I do like to point out unintended microaggressions when I see them.
- seivan 11y agoMy aggressions are neither micro nor ambiguous. I would never say design isn't important, seems counter-productive given that's what I (try to) spend most of my time on Oh sorry, second to "micro-aggressions".
- c54 11y agoWe have some programming languages in which the programmer specifies a desired outcome, and the system figures out how to do it: Prolog and Haskell are two examples. We'll get there!
- tome 11y agoProlog satisfies that description much more closely than Haskell. In fact Haskell is really closer to C than Prolog, if that's the basis for the comparison.
- YeGoblynQueenne 11y agoProlog is probably the only language that gets even close to the original declarative programming promise, of giving the computer a goal and letting it find the way to achieve it. It looks like machine learning might be moving towards fulfilling that promise, btw. A bit of a shame that logic programming is not part of that. Prolog and machine learning would be a match made in heaven, if you ask me (you shouldn't, I'm biased).
- TeMPOraL 11y agoI think it's worth saying explicitly how Prolog does that. It basically runs a DFS on a graph for you. That's it. You can code up a basic Prolog in ~50 lines of Lisp. It's a pretty simple tool. It's also fascinating to look how people try to use it as a general-purpose programming language. To do that, you have to explicitly hack for the DFS running in the background, the one you were not supposed to know about (from the POV of designing your program) because it's meant to abstract things away. You literally have to do flow control on a graph search algorithm to do things like iteration. The point being - Prolog is a useful tool, but it's also a very simple one. It won't do magic for you.
- YeGoblynQueenne 11y agoAh, sure, Prolog is dead simple and not a general-purpose language. Here's a fun little puzzle then. I wrote this predicate: == c(A-B, B-T, A-T). == That's all the predicate definition - nothing else to it. One line, yeah? So, you put it in a Prolog source file, consult it, and then fire queries like this: -- ?-c([a,b|A]-A,[c,d|B]-B,T-B). A = [c, d|B], T = [a, b, c, d|B]. ?- c([a,b|A]-A,[c,d|B]-B,T-[e,f|C]). A = [c, d, e, f|C], B = [e, f|C], T = [a, b, c, d, e, f|C]. ?- c([a,b|B]-B, B-T, [a,b,c,d|T]-T). B = [c, d|T]. ?- c((a,b,A)-A,(c,d,B)-B,T-B). A = (c, d, B), T = (a, b, c, d, B). -- Now, based on your understanding of Prolog from ~50 lines of Lisp- how does that predicate work?
- seanmcdirmid 11y agoRule based AI (Prolog) and machine learning are actually considered to be at opposite sides of the AI coin. As far as I know, no one has been able to combine them into a decent combined experience (you either work with rules or trained models).
- YeGoblynQueenne 11y agoDefine "decent". There's been a lot of work on Inductive Logic Programming, Statistical Relational Learning and generally Logic and Relational Learning (learning Prolog programs from data). First and foremost is PRISM, that started the trend: http://rjida.meijo-u.ac.jp/prism/ http://rjida.meijo-u.ac.jp/prism/ For newer stuff there's ProbLog, latest version of which is actually written in Python: https://dtai.cs.kuleuven.be/problog/ https://dtai.cs.kuleuven.be/problog/ And several other programming languages and frameworks: http://probabilistic-programming.org/wiki/Home http://probabilistic-programming.org/wiki/Home (Though not all of that stuff is specifically logic programming).
- micheljansen 11y agoIt's already difficult enough for humans to understand humans, so I wouldn't worry too much about this. What I do expect is that the least sophisticated parts of jobs like conversion optimisation will eventually become largely automated. Humans would still input the constraints, but the machine generates the inputs for a multivariate test, measures results, decides which variant performs best and rolls it out to all users. Think The Grid [1] mashed up with Multi-armed Bandid Experiments [2] [1] https://thegrid.io https://thegrid.io [2] http://analytics.blogspot.nl/2013/01/multi-armed-bandit-experiments.html http://analytics.blogspot.nl/2013/01/multi-armed-bandit-expe...
- JeffreyKaine 11y agoThis is exactly what I was thinking about. Some way to tell a goal and the constraints to the computer and then have the computer run multivariate tests on generated UI's to optimize for the goal.
- mitchtbaum 11y agoWe'll need a good representational form first, a UI/UX language or family of languages, something we can standardize on, develop, and use regularly to first establish representations of key, foundational concepts. Basically, we would need to scrape http://ui-patterns.com/ http://ui-patterns.com/ into a UI object ontology, map a bunch of its unstructured data about why each pattern solves some set of problems, and then we'd need a-whole-nother related problem solving analyzer system that could use that data to produce a software model. OMG recently released an Interaction Flow Modeling Language, http://www.ifml.org/ http://www.ifml.org/ , and that seems like it has some added range of expressiveness compared to UML and some of their other description languages. I like these OMG guys since they seem to synthesize Semantic Web research and ongoing best practices pretty well.