Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

End-User Programming is where regular end users, i.e. non-programmers, are able to customize a program, or create a new one, with minimal training or instruction.

App Inventor for Android is one recent example, but perhaps the most popular example of end-user programming is the spreadsheet.

What examples of end-user programming have you seen used, or believe to be useful? What's the philosophy of the system? What challenges remain?

share|improve this question

closed as primarily opinion-based by gnat, Corbin March, GlenH7, MichaelT, Michael Kohne Aug 31 '13 at 23:12

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

    
Could you elaborate a little more on the "are able to customize a program" - "customize"? As in save the layout of the icons, script in the program ... am I even on the right track? –  Rook Oct 30 '10 at 23:29
    
The literature on end-user programming leaves this point pretty vague. But simple customization of the ribbon in Office counts, for example. I wouldn't consider such a simple customization interesting. Customization through rule writing is probably closer to the truth. –  Macneil Oct 30 '10 at 23:59

10 Answers 10

up vote 2 down vote accepted

There are a lot of, what many would call, "domain specific" languages:

Mathematics:

  • Matlab & Simulink
  • Maple

Control Systems:

  • Ladder Logic
  • Function Block Diagram
  • Sequential Function Chart
  • I might even include the LEGO Mindstorms programming software here

Statistics:

  • SPSS

Databases:

  • SQL (the syntax is declarative enough that most non-programmers can write queries)
  • SQL Server Integration Services (I'm thinking about the flow-chart like editor here)
share|improve this answer
2  
Maybe a GUI like in MS Access, SSMS or a report writer like Crystal Reports to create a query, but not SQL itself. –  JeffO Nov 7 '10 at 17:58
    
@Jeff: I agree. SQL requires a learning curve, though that curve may be shallow for most. –  Michael K Nov 9 '10 at 15:06
    
@Micheal - most end users or those aspiring to be programmers? Maybe with formal instruction, but they tend to stick to the graphical query builders and only edit the text on rare occasions. –  JeffO Nov 10 '10 at 13:32
    
Ladder Logic was intended to be easy to understand for electricians and engineers however in practice the logic become unmanageable for end-users for anything non-trivial. –  Christopher Jul 21 '11 at 7:10

Any domain-specific language worth it's salt ought to be considered a viable example of end-user programming, since that is its primary objective...to be familiar enough to the user that they don't have to be a software engineer to use it.

share|improve this answer
    
There are a lot of full-bred languages which are popular/widely used by non-software-engineers (Fortran, MATLAB, Cobol, VB, R, ...). So where do we draw the line? Buy yes, in general, your formulation is correct. +1 –  Rook Nov 9 '10 at 16:45

LabVIEW, the graphical programming language, used by many scientists and engineers (especially in biometrics).

Arguably, it showed the money path of the graphical programming for a much bigger software company.

share|improve this answer
    
Thanks, this is very useful. BTW, what's the much bigger software company? –  Macneil Nov 10 '10 at 4:22
2  
@Macneil: msdn.microsoft.com/en-us/library/aa480213.aspx –  rwong Nov 10 '10 at 5:27

Tecplot

Has support for Python scripting (modifying input data, Fourier analysis, ...)

Autocad

VBA and LISP scripting


Would these count as end user programming?

share|improve this answer
    
The OP said "non-programmers", so I hesitated to include VBA and LISP. However, with LISP you can make an "internal" domain specific language such that the end user doesn't know they're using LISP. –  Scott Whitlock Oct 31 '10 at 14:01
    
@Scott W. - Yeah ... but then again, I don't know also where to put the line between non-programmers and progarmmers so ... it's all relative. –  Rook Oct 31 '10 at 18:50
3  
VBA definately counts partly because of the recorder, and partly because there are alot of non-programmers out there who use it! –  Anonymous Type Nov 8 '10 at 5:38

Microsoft SharePoint allows users to do quite a bit graphically without any code. It includes data entry with formating and verification, security, work-flow.

share|improve this answer

VBA when used with Excel or Access

It deserves its own answer, and is probably the most widely used example of a end-user programming environment on the planet.

share|improve this answer

I've heard good things about Kodu, from Microsoft. It was developed to allow kids to build their own games without already knowing how to program. http://fuse.microsoft.com/project/kodu.aspx

share|improve this answer

Interface Builder

Actually we had a designer working on the design of an iphone app and he could easily work on Interface Builder with very short learning curve!

share|improve this answer

mIRC

Back in the day, mIRC scripting was a relatively harmless way of exposing end-users to simple variables and event handling. It probably still is, really.

share|improve this answer

There's a spectrum of end user customization; the trivial ones (like dragging/dropping the menu items in Office) require little effort, and provide little customization. Progressively more complex customizations require progressively more knowledge and programming skill. At that extreme is my personal favorite

Emacs

Chunks are written in C, but much of it is written in Emacs Lisp, which is fully available to you as the end user. If you take the trouble to learn it, you can customize your editing experience to your hearts' content.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.