Half a croissant, on a plate, with a sign in front of it saying '50c'
h a l f b a k e r y
It's the thought that counts.

idea: add, search, annotate, link, view, overview, recent, by name, random

meta: news, help, about, links, report a problem

account: browse anonymously, or get an account and write.

user:
pass:
register,


                                                                                 

non-verbal programming language

using language-independant symbols and sounds create a programming environment
  (+7)
(+7)
  [vote for,
against]

Just a foggy sort of idea where universal icons, shapes, sounds, etc. are used in some visual way to construct elements which could be built up to create software applications. There would need to be some symantic relationship to what you eventually see on the screen, but it would never require you to know a particular language or type in textual information. The kinds of apps you could build would be very visual, sensory, but could also handle data structures, talk to the web, etc. but all that is hidden by the Visual Building tool.

This is not a Visual C++ but a language completely set up with no words.

triptych, Jun 28 2000

one possible example http://www.csun.edu.../93virt/Tdvp~1.html
[triptych, Jun 28 2000, last modified Oct 04 2004]

Toontalk http://www.toontalk.com
Program through animated cartoons [acooke, Jun 28 2000, last modified Oct 04 2004]

visual programming languages http://www.google.c...ogramming+languages
There's been a lot of research in this direction; almost all the hits for this search are relevant. For some reason, it's never really caught on. The only notable success for the "visual programming" paradigm is UML... [egnor, Jun 28 2000, last modified Oct 04 2004]

unified modeling language http://www.google.c...d+modeling+language
The Unified Modeling Language is a standard for visually modeling software design. It's a little more abstract than a programming language (you can't *run* a UML "program"), but it's frequently used for specification purposes. It may not be quite what you had in mind, since there are usually words inside the shapes. [egnor, Jun 28 2000, last modified Oct 04 2004]

INTERCAL http://www.tuxedo.org/~esr/intercal/
Abbreviation for 'Compiler Language With No Pronounceable Acronym' [pottedstu, Jun 28 2000, last modified Oct 04 2004]

Brainf*** http://www.muppetlabs.com/~breadbox/bf/
Language with 8 non-verbal commands. [pottedstu, Jun 28 2000, last modified Oct 04 2004]

Ook! http://www.physics....r/esoteric/ook.html
Simple programming language for orang-utans. [pottedstu, Jun 28 2000, last modified Oct 04 2004]

The Ultimate RISC http://www.cs.uiowa.edu/~jones/arch/risc/
Taking the reduced instruction set to its limit - one instruction [pottedstu, Jun 28 2000, last modified Oct 04 2004]

befunge http://www.catseye....a/esoteric/befunge/
Incoherent symbolic language [tanimac, Feb 14 2002, last modified Oct 04 2004]

[pottedstu]'s "Ook" link has moved. http://www.dangermo...t/esoteric/ook.html
It's now here (in case the redirect page is removed). [angel, Oct 04 2004]

Brian's Intercal Page http://www.muppetla...~breadbox/intercal/
Woe upon those who enter this page. May you leave with your sanity intact. [muppetboy, Oct 04 2004]

Automator http://www.apple.co...features/automator/
Though not a programming language per se, Mac OS X's Automator allows the "stringing together" of various programs' functions through a visual interface that doesn't require coding. [wooby, May 30 2005]

[link]






       Slightly off topic but this has reminded me of a thought I once had: "Why don't we hear about chinese programming languages?"   

       The vocabulary of a computer language is often very limited so would be suitable to be depiceted as individual word symbols. There would be no spelling errors in commands.   

       The flavour of the language would come from the host language - chinese, japanese etc.
st3f, Apr 18 2001
  

       (re st3f's annotation) One of the things I like about Java but which I've never seen exploited is the fact that its source encoding is Unicode. So in theory any Unicode character is valid in a Java program. Do Chinese-speaking Java programmers name their functions and variables with ideographs? Do mathematicians and physicists use actual Greek (and Hebrew, etc.) characters instead of spelling out their names? If not, they should!
wiml, Apr 18 2001
  

       I don't know about Chinese programmers, wiml, but as a mathematician/physicist, I don't write my Java programs with greek characters for the simple reason that they are really difficult to type!
aj, Apr 18 2001
  

       I actually do use non-ASCII characters in Java programs. For example, in currency conversion programs, I might use €, ¥, and £ as variable names.
nobody, May 05 2001
  

       IBM's OpenDX (www.opendx.org) isn't quite non-verbal, in that there are still modules with unpronounceable semi-English names, but you can create a data manipulation / visualising problem fairly easily by dragging and dropping commands, using the GUI to set options. You connect the input of one module to the output of another by dragging lines between them.   

       You could create a simple program by dragging an Input module onto the screen, double-clicking to set the input file, dragging various other modules around and ending up with the Image command which displays a 3d rotatable picture on the screen.   

       It also lets you split your program up into different sections (which look like those tabbed dialog boxes that Microsoft likes so much) and joining up in various ways.   

       I'm sure that this general principle could be extended to "real" programming rather than just visualising maps and molecules and what not.
cp, May 28 2001
  

       Excellent idea. Assuming the Sapir-Whorf Hypothesis proves to be true (from linguistics/neurolinguistics), then this system of programming/metaprogramming could be an excellent tool for wakening.
udp, May 29 2001
  

       APL is a powerful symbolic "non-verbal" language. it was fun to learn. not fun to use.
gnormal, May 29 2001
  

       INTERCAL uses numbers for variable names, and has extremely limited control structures. Therefore a typical INTERCAL program might only contain a vocabulary of 10 words, one of which may be the unnecessary but polite "PLEASE".   

       You would, however, be better memorising numerical machine code CPU op codes, and typing them in, in hex naturally. This would be less portable than INTERCAL, but also less likely to provoke insanity.   

       The following machine code will multiply 2 by 3 and store the result, but only on an Intel Pentium and compatible microprocessor (you would have to set up the "ebp" register to point to the stack first); "//" is used as a comment marker; what follows until the end of a line is not part of the program.   

       C7 45 FC 02 00 00 00 // load 2 onto stack
C7 45 F8 03 00 00 00 // load 3 onto stack
8B 45 FC // load first value into accumulator
0F AF 45 F8 // multiply by second value
89 45 F4 // store result on stack
  

       Language-neutral, I think you'll agree. Surprisingly, when people had to program like this, it was not uncommon for true programmers to know this kind of stuff off by heart.   

       Writing that in Intercal would be far harder; in fact I have no idea how to do it, but since INTERCAL has no arithmetic operators, it's not going to be easy.
pottedstu, Sep 27 2001
  

       National Instruments has a graphical programming language designed to interoperate with their data acquisition hardware. It is a data-oriented language rather than a procedure-oriented one. The language consists of operators (arithmetic, logic, data type conversion, etc.) represented by various geometric symbols with input and output connection points. The program consists of lines (indicating data flow) connecting outputs to inputs. In the end you get a tangle of colored lines (color indicates data type) resembling the schematic diagram of a complicated electronic circuit. It's not general purpose, but it is a programming language.
BigBrother, Oct 01 2001
  

       I've seen something along these lines a few years ago for an interactive voice system (running on a Sun box of some sort).... you dragged & dropped icons on the screen to build a program which ultimately became a voice response system.   

       ...and, there was something else kind of like this that was once bundled as a give-away with (I think) Creative SoundBlaster cards, back in the DOS days. My memory is very vague on that one, but it was interesting to play with. It was for building interactive tutorials/Computer-Assisted Learning screens or something like that. Had icons for if/then/else, do xxx, and you joined lines around the place to make the logic flow. Kind of irritating, in a way, now that I think about it.
kai_g, Nov 16 2001
  

       The language Brainfuck has 8 instructions:   

       > Increment the pointer.
< Decrement the pointer.
+ Increment the byte at the pointer.
- Decrement the byte at the pointer.
. Output the byte at the pointer.
, Input a byte and store it in the byte at the pointer.
[ Jump to the matching ] if the byte at the pointer is zero.
] Jump to the matching [.
  

       Because all actions are done by moving a pointer and modifying the pointer, there are no variables, and thus a Brainfuck program consists entirely of a combination of the above elements (see below for an example).   

       Ook! is a variation on Brainfuck, a joke, but Turing-complete, programming language which consists entirely of combinations of the lexical elements   

       Ook.
Ook?
Ook.
  

       The interesting thing is that the word "Ook" is completely superfluous, meaning the language essentially has 3 symbols.   

       But you can go further. You only need one instruction for a programming language (or a microprocessor), "subtract and branch if negative", which would take 3 operands. Such a language would need no opcodes or commands, just triples of numbers: two data addresses (or variable numbers/names) and offset for the conditional branch (or line number to jump to). (Sorry, but I can't find any good links on this.)   

       What follows is a quine written in Brainfuck. The linebreaks are to fit it on the page, and have no other significance (a quine is a program that produces a copy of itself as output).   

       ->+>+++>>+>++>+>+++>>+>++>>>+>+>+>++>+ >>>>+++>+>>++>+>+++>>++>++>>+>>+>++>+ +>+>>>>+++>+>>>>++>++>>>>+>>++>+>+++> >>++>>++++++>>+>>++>+>>>>+++>>+++++>> +>+++>>>++>>++>>+>>++>+>+++>>>++>>+++ ++++++++++>>+>>++>+>+++>+>+++>>>++>>+ +++>>+>>++>+>>>>+++>>+++++>>>>++>>>>+ >+>++>>+++>+>>>>+++>+>>>>+++>+>>>>+++ >>++>++>+>+++>+>++>++>>>>>>++>+>+++>> >>>+++>>>++>+>+++>+>+>++>>>>>>++>>>+> >>++>+>>>>+++>+>>>+>>++>+>+++++++++++ +++++++>>>>+>+>>>+>>++>+>+++>>>++>>++ ++++++>>+>>++>+>>>>+++>>++++++>>>+>++ >>+++>+>+>++>+>+++>>>>>+++>>>+>+>>++> +>+++>>>++>>++++++++>>+>>++>+>>>>+++> >++++>>+>+++>>>>>>++>+>+++>>+>++>>>>+ >+>++>+>>>>+++>>+++>>>+[[->>+<<]<+]++++ +[->+++++++++<]>.[+]>>[<<+++++++[->+++++ ++++<]>-.------------------->-[-<.<+>>]<[+]<+> >>]<<<[-[-[-[>>+<++++++[->+++++<]]>++++++++++++++<]>+++<]++++++[->+++++++ <]>+<<<-[->>>++<<<]>[->>.<<]<<]   

       Non-verbal enough for you?
pottedstu, Nov 16 2001
  

       This is close to being my favorite œB page of all.
bristolz, Nov 20 2001
  

       C:\> copy con program.exe

waugsqueke, Feb 14 2002
  

       Very baked. Simulink in Matlab for creating complex math formulae. Excel / Access Macro creation.
RayfordSteele, Feb 14 2002
  

       We all know it's baked in trivial, not-really-programming situations. That isn't really the idea.   

       Logic gates are one nice example; math formulae similarly. But they are limited to very specific domains.
sadie, Nov 19 2002
  

       LabView, from national instruments. I'll find a link sometime.   

       Particularly geared towards industrial testing, measurement, and computer control, but should be flexible enough to do anything, from what I gather. (what is it they say you need to write any program? an if, a loop and something else)
yamahito, Nov 19 2002
  

       To write any program, you need a Turing machine or any Turing-complete language. As said above, even BrainFuck has that.   

       That doesn't mean I'd want to write a database in one, though.
sadie, Nov 24 2002
  

       Actually, you can write non-verbal programs in "verbal" programming languages. For example, this C statement:   

       for(i=j=k=1;--j||k;k=j?i%j?k:k-j:(j=i+=2));   

       btw, it is unknown whether the statement will halt since it finds the first odd perfect number, whose existence is an open question in mathematics after centuries of inquiry.
muppetboy, Nov 24 2002
  

       A snippet of Intercal for your enjoyment (I believe this is some kind of Hello World program). BTW, the link to Brian's Intercal above may induce insanity when you come to the realization that he's implemented not only Quining and a floating point library in Intercal, but also Fast Fourier Transforms!! OUCH!   

       PLEASE DO ,1 <- #13   

       DO ,1 SUB #1 <- #584   

       DO ,1 SUB #2 <- #837   

       DO ,1 SUB #3 <- #1100   

       DO ,1 SUB #4 <- #1356   

       DO ,1 SUB #5 <- #1615   

       DO ,1 SUB #6 <- #1824   

       DO ,1 SUB #7 <- #2135   

       DO ,1 SUB #8 <- #2383   

       DO ,1 SUB #9 <- #2642   

       DO ,1 SUB #10 <- #2892   

       DO ,1 SUB #11 <- #3140   

       DO ,1 SUB #12 <- #3361   

       DO ,1 SUB #13 <- #266   

         

       PLEASE DO ,2 <- #1   

       PLEASE DO .5 <- #0   

       PLEASE DO .4 <- #1   

         

       PLEASE COME FROM (1)   

       DO .6 <- ",1 SUB .4"~#255   

       DO .6 <- !6~#15'$!6~#240'   

       DO .6 <- !6~#15'$!6~#240'   

       DO .6 <- !6~#15'$!6~#240'   

       DO .1 <- .5   

       DO .2 <- .6   

       PLEASE DO (1010) NEXT   

       DO .3 <- .3~#255   

       DO .5 <- .6   

         

       DO ,2 SUB #1 <- .3   

       PLEASE READ OUT ,2   

         

       (1) PLEASE DO .4 <- ",1 SUB .4"~#3840   

       PLEASE GIVE UP
muppetboy, Nov 24 2002
  

       BTW, I really like this idea so I'm giving it a croissant!   

       One interesting real-world, really-useful application of this general concept is in UML "roundtripping". UML is semi-nonverbal and conveys a whole lot about how a program is organized (although not enough about how it works yet).
muppetboy, Nov 24 2002
  

       UML is a nice idea, but it specifies a very small part of the design of a program in huge detail. It still needs some work before it's the flexible hold-all tool its proponents claim it is.
sadie, Feb 11 2003
  

       There's synth software out there that has a graphical programming interface. Basically, there is a blob and it makes a sound when it hits each graphic element. Some elements let the blob pass through others reflect it at right angles (you can build complex loops). Spacing determines time between sounds. It's fun for about 15 mins.   

       I also heard that the Chinese have written a program based on their character set (many thousands of symbols) It'd take years to learn to speak Chinese, but you could probably learn the key element (DO, FOR, UNTIL, etc.) pretty quickly so that's about as close to non-verbal as makes no difference.   

       And for the ultimate non-verbal language - just go back to assembler!
FloridaManatee, Feb 11 2003
  

       I had one of those sort of days yesterday. I started out with a program that was producing slightly incorrect output and by the end of the day had turned it into a program that produced no output at all.
DrBob, Feb 11 2003
  

       In APL, a very nice symbolic language, it was very easy to do truly enormous number crunching with just a few symbols. But it was almost impossible to fathom the logic the next day without ruining the beautiful nuclear compactness with excessive comments. I loved it those many years ago, but the lack of an APL keyboard (now available) was always a drawback.
pluterday, Feb 11 2003
  

       // necessary and apparenlty congenital step of knowing C //   

       You have glimpsed the essential truth, Grasshopper. Great programmers are born, not made.   

       To a born programmer, everything - even the NT driver SDK - makes sense .....
8th of 7, Feb 11 2003
  

       DCL.
Shz, Feb 11 2003
  

       I programme everything in LabView, which is (I think) utterly brilliant. I have not found anything I can't do (at least, anything I can't do in LabView which I would be able to do in any other language), it's incredibly fast to code, intuitive, portable, and it makes no difference whether your native tongue is English or Mandarin.   

       I just noticed [yamahito]'s annotation above mentioning LabView - yes, it is flexible enough to do anything, at least in all the areas I've used it in (graphics, robotics, statistics, image analysis).
MaxwellBuchanan, May 16 2007
  

       //I also heard that the Chinese have written a program based on their character set //   

       You've got an extra moon here, that's why it's not working. And did you declare this bamboo?
phundug, May 17 2007
  
      
[annotate]
  


 

back: main index

business  computer  culture  fashion  food  halfbakery  home  other  product  public  science  sport  vehicle