vipsi - about vipsi
Author: kio@little-bat.de
Keywords: vipsi shell script interpreter programming cgi

# vipsi - shell and script language

## introduction

### about vipsi

#### vipsi - the friendly one.

vipsi is intended as an easy-to-use shell and script language with a syntax similar to C/C++, Pascal or Basic. vipsi can be used interactively as a shell, as a pocket calculator, as a script interpreter e.g. for file synchronization or maybe to update a web site, or for CGI scripts.

the intended audience is 'everybody'. the supported platforms will be 'all' - hopefully some day.

currently it is a command line tool only, the first platform it ran on was MacOS X, the current primary development platform is Linux/i386. ports to other Unix-like platforms should be fairly simple.

vipsi uses unicode for text, double float for numbers and handles arrays and lists alike. it comes with lots of predefined functions, mathematical and for text manipulation and conversion, has powerful list operators and of course all the basic stuff.

#### what makes vipsi different from other projects?

- it's syntax: it is procedural and looks very similar to C/C++, Pascal or Basic. everybody who ever asked himself what was similar to C in the csh: i dunno either. ;-) vipsi is.
- as may be obvious from the words above: vipsi is not POSIX shell compliant. text literals must be enclosed in quotes. dot.
- powerful list processing: you may pass lists to nearly every function or operator instead of numbers and texts, and the function or operation is performed on all list items. recursively.
- consistency: there is no "object a, a subclass of a can perform functions a,b,c,e, and f and object b, also a subclass of c can perform a,c,d,e, but not b and f..." wow, i obviously like Powerpoint, don't you see?
- no syntax ambiguities: ever wondered which argument of a function call get's evaluated first? ever wondered what the result of *a++ + *a++ might be? ever grumbled over the compiler, which didn't know which overloaded function to call for argument 0? even if casted? stunned when confrontated with C's function pointer syntax? ok, vipsi is an interpreter and can't replace C, but besides that: welcome to vipsi!
- no limitation on text: vipsi uses Unicode and can handle all Unicode characters from $00 to beyond $FFFF (as opposed to Java) and there is no limit on text lengths (except those imposed by your OS and amount of RAM ;-) ).
- quick introspection: you can disassemble any procedure just by executing it's name. you can list all variables or local variables or any other variable you like just by typing it's name; e.g.: globals for all globals or locals for all locals.
- quick help: besides this html manual there is built-in help: just type words to get a list of all built-in words, or info "a_word" to get info on a_word.
- vipsi is still work in progress .... huh, ok, not that different, maybe, but it's still not as complete as others. which means, we need help...

#### this project is looking for members

everybody is invited to participate in this project, just send an email to Kio, the project administrator. see the help wanted page for the most utterly wanted positions to fill in, but don't hesitate to volunteer in any case. ;-) the help wanted page is regularly purged by sourceforge, so it may be empty, but help is always appreciated!

the current project state is alpha, the current release version is 0.8.3 (as of 2003-09-10).

just to show you a first code snippet:

    vipsi> 46+3*1.1      = 49.3
    vipsi> var i=10
    vipsi> do i--; while i; log i," "; loop    9 8 7 6 5 4 3 2 1
    vipsi> proc fak(n) { if n>1 return n*fak(n-1) else return 1 then }
    vipsi> log "fak(7) = ",fak(7)      fak(7) = 5040

have fun, get loved to it and join the project ;-)
click on the links in the navigation bar to the left to go to the project pages.

              ... kio !