name=Eiffel nameURL=http%3A%2F%2Fwww.eiffel.com%2F see= logo=71x105%3Dhttp%3A%2F%2Fwww.eiffel.com%2Fimages%2Fpictures%2Fsmaller_tower.gif type=O%20-%20Object-oriented desc=Eiffel%20is%20an%20object-oriented%20language%0D%0Aintended%20for%20general%20application%0D%0Aprogramming.%20%20Its%20syntax%20is%20superficially%0D%0Asimilar%20to%20C.%20%20Eiffel%20offers%20a%20broad%0D%0Arange%20of%20OO%20programming%20features%3A%0D%0Ainheritance%2C%20polymorphism%2C%20assertions%2C%20%0D%0Aexception%20handling%2C%20packaging%2C%20%0D%0Agenerics%2C%20and%20strong%20type%20checking.%0D%0A%3Cbr%3E%0D%0AEiffel%20is%20available%20from%20Interactive%0D%0ASoftware%20Engineering%2C%20Inc.%20%20Their%0D%0Acommercial%20Eiffel%20system%20compiles%20Eiffel%0D%0Ato%20interpretable%20bytecodes%20%0D%0A%28similar%20to%20the%20way%20Java%20is%20compiled%29%2C%20but%0D%0Afor%20efficiency%2C%20the%20bytecodes%20are%20usually%0D%0Atranslated%20into%20C%20code%20and%20compiled%20with%0D%0Aplatform-specific%20C%20compilers.%0D%0A%3Cbr%3E%0D%0ANewer%20versions%20of%20the%20Eiffel%20system%0D%0Ainclude%20support%20for%20interfacing%20to%0D%0Aother%20languages%2C%20and%20to%20popular%0D%0Adistributed%20computing%20schemes%20like%0D%0ACOM%20and%20CORBA.%0D%0A origin=Bertrand%20Meyers%2C%201986-92. seealso=C%2C%20C%2B%2B%2C%20Sather%2C%20Objective-C remark=Eiffel%20is%20designed%20in%20large%20part%20to%0D%0Asupport%20program%20safety%20and%20orderly%0D%0Asoftware%20development%2C%20goals%20also%0D%0Aembraced%20by%20the%20Ada%20community.%20%20The%0D%0Aclass%20definition%20syntax%20is%20designed%20to%0D%0Asupport%20a%20software%20engineering%20approach%0D%0Acalled%20%3Ci%3EDesign%20by%20Contract%3C%2Fi%3E.%20%20%0D%0A%3Cbr%3E%0D%0ADespite%20Eiffel%27s%20simplicity%2C%20power%2C%20and%0D%0Agood%20performance%2C%20it%20has%20not%20met%20with%0D%0Athe%20broad%20acceptance%20of%20C%2B%2B%20or%20Java.%0D%0AWhy%3F%20%20Possibly%20because%20there%20have%20not%0D%0Abeen%20a%20variety%20of%20free%2C%20portable%20Eiffel%0D%0Acompilers%2C%20or%20possibly%20because%20programming%0D%0Awith%20Eiffel%20requires%20significant%20coding%0D%0Adiscipline.%20%20Today%2C%20Eiffel%20is%20gaining%0D%0Asome%20acceptance%2C%20but%20the%20market%20for%0D%0Aobject-oriented%20development%20environments%0D%0Ais%20a%20crowded%20one. links1=http%3A%2F%2Fwww.cm.cf.ac.uk%2FCLE%2F links2=http%3A%2F%2Fwww.totalweb.co.uk%2Fgustave%2Ffaq%2Findex.htm links3=http%3A%2F%2Fwww.sigco.com%2F links4= links5= date=Last%20updated%2012%2F16%2F97 sample=From%20%3Ci%3EAn%20Invitation%20to%20Eiffel%3C%2Fi%3E%2C%20by%20Bertrand%20Meyers%0D%0A%3Cbr%3E%0D%0A%3Cpre%3E%0D%0Aclass%20ACCOUNT%20feature%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20balance%3A%20INTEGER%3B%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20owner%3A%20PERSON%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20minimum_balance%3A%20INTEGER%20is%201000%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20open%20%28who%3A%20PERSON%29%20is%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20--%20Assign%20the%20account%20to%20owner%20who.%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20do%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20owner%20%3A%3D%20who%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20end%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20deposit%20%28sum%3A%20INTEGER%29%20is%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20--%20Deposit%20sum%20into%20the%20account.%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20do%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20add%20%28sum%29%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20end%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20withdraw%20%28sum%3A%20INTEGER%29%20is%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20--%20Withdraw%20sum%20from%20the%20account.%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20do%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20add%20%28-sum%29%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20end%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20may_withdraw%20%28sum%3A%20INTEGER%29%3A%20BOOLEAN%20is%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20--%20Is%20there%20enough%20money%20to%20withdraw%20sum%3F%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20do%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Result%20%3A%3D%20%28balance%20%3E%3D%20sum%20%2B%20minimum_balance%29%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20end%20%0D%0A%20%20%20%20%20%20%20%20%20feature%20%7BNONE%7D%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20add%20%28sum%3A%20INTEGER%29%20is%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20--%20Add%20sum%20to%20the%20balance.%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20do%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20balance%20%3A%3D%20balance%20%2B%20sum%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20end%20%0D%0Aend%20--%20class%20ACCOUNT%20%0D%0A%3C%2Fpre%3E _store=1 _add=Eiffel _usertab=1 _usersearch=0 _format=full = name=Elisp nameURL=http%3A%2F%2Fwww.cs.indiana.edu%2Felisp%2Felisp-intro.html see=Lisp logo=http%3A%2F%2Fwww.fsf.org%2Fgraphics%2Fgnu-head-sm.jpg type=A%20-%20Application%2FMacro desc=Elisp%20is%20a%20dialect%20of%20Lisp%20that%20serves%0D%0Aas%20the%20scripting%20and%20extension%20language%0D%0Afor%20GNU%20Emacs%2C%20a%20very%20powerful%20text%0D%0Aeditor.%20%20Elisp%20is%20a%20full%20Lisp%20system%2C%20but%0D%0Adoes%20not%20conform%20closely%20to%20any%20particular%0D%0ALisp%20language%20standard.%0D%0A%3Cbr%3E%0D%0ABecause%20it%20was%20designed%20to%20support%20creation%0D%0Aof%20new%20functionality%20for%20the%20Emacs%20editor%2C%0D%0AElisp%20has%20a%20broad%20set%20of%20string%20and%20text%0D%0Ahandling%20operations%2C%20as%20well%20as%20special%0D%0Afunctions%20and%20data%20types%0D%0Afor%20controlling%20the%20editor%20and%20interacting%0D%0Awith%20the%20user.%20%20In%20terms%20of%20syntax%2C%0D%0AElisp%20is%20close%20to%20Interlisp%2C%20but%20the%0D%0Asyntax%20of%20some%20Lisp%20constructs%20is%0D%0Amodified%20to%20support%20in-line%20documentation%0D%0Aof%20editor%20functions.%20%20Early%0D%0Aversions%20of%20Elisp%20lacked%20many%20standard%0D%0Aparts%20of%20conventional%20lisps%2C%20such%20a%20macros%0D%0Aand%20floating-point%20numbers%2C%20but%20newer%0D%0Aversions%20have%20these%20features%20as%20well%20as%0D%0Amany%20Common%20Lisp%20elements.%20%20%0D%0AThe%20Elisp%20engine%2C%20which%20is%20really%20the%0D%0Acore%20of%20GNU%20Emacs%2C%20is%20written%20entirely%0D%0Ain%20C.%20%20There%20is%20no%20Elisp%20compiler%2C%20but%0D%0AGNU%20Emacs%20can%20pre-parse%20Elisp%20code%20into%0D%0Asimpler%20byte-codes%20that%20speed%20loading. origin=Richard%20Stallman%2C%20GNU%20Project%2C%201985. seealso=Xlisp%2C%20Common%20Lisp remark=The%20GNU%20Project%20is%20an%20effort%20to%20create%20a%0D%0Awholly%20free%2C%20unencumbered%20computing%0D%0Aenvironment.%20%20Initially%20projected%20to%20take%0D%0Atwo%20years%2C%20the%20project%20is%20still%20going%20after%0D%0Aabout%2012%20years.%20%20GNU%20Emacs%20%28also%20its%0D%0Aclose%20cousin%20XEmacs%29%20is%20universally%0D%0Aacknowledge%20as%20the%20most%20powerful%20text%20editor%0D%0Aever%20created.%20%20How%20many%20other%20editors%20can%0D%0Asupport%20creation%20of%20an%20entire%20web%20browser%0D%0Aor%20threaded%20news%20reader%20or%20version%20control%0D%0Asystem%20entirely%20in%20their%20extension%20language%3F%0D%0AElisp%20is%20a%20highly%20usable%20and%20friendly%0D%0ALisp%20dialect%20that%20has%20enjoyed%20great%20popularity%0D%0Aas%20a%20medium%20for%20extending%20Emacs.%0D%0A%3Cbr%3E%0D%0AGNU%20Emacs%2C%20and%20hence%20Elisp%2C%20is%20available%0D%0Aon%20all%20UNIX%20systems%2C%20as%20well%20as%2032-bit%0D%0AWindows%20and%20many%20other%20computers.%0D%0AElisp%20is%20very%20well%20documented%20by%20a%0D%0Acomprehensive%20manual%20distributed%20with%0D%0AEmacs%20and%20available%20on%20the%20web. links1=http%3A%2F%2Ffunnelweb.utcc.utk.edu%2F%7Eharp%2Fgnu%2Felisp%2Felisp_toc.html links2=ftp%3A%2F%2Farchive.cis.ohio-state.edu%2Fpub%2Fgnu%2Femacs%2Felisp-archive%2F links3=http%3A%2F%2Fwww.fsf.org%2F links4=http%3A%2F%2Fwww.cs.indiana.edu%3A800%2FLCD%2Fcover.html links5= date=Last%20updated%2012%2F16%2F97 sample=%3Cpre%3E%0D%0A%3B%3B%20Simple%20Elisp%20example%0D%0A%28defconst%20date-pattern-1%20%0D%0A%20%20%22%5C%5C%281%3F%5B0-9%5D%5C%5C%29%2F%5C%5C%28%5B123%5D%3F%5B0-9%5D%5C%5C%29%2F%5C%5C%28%5B0-9%5D%5B0-9%5D%5C%5C%29%22%0D%0A%20%20%22Regexp%20for%20one%20style%20of%20data%20string%22%29%0D%0A%0D%0A%28defun%20replace-all-dates%20%28%29%0D%0A%20%20%22Replace%201%2F27%2F93%20dates%20with%2027-1-93%20dates%22%0D%0A%20%20%28interactive%29%0D%0A%20%20%28let%20%28%28mcount%200%29%29%0D%0A%20%20%20%20%28while%20%28re-search-forward%20date-pattern-1%20nil%20t%29%0D%0A%20%20%20%20%20%20%28replace-match%20%22%5C%5C2-%5C%5C1-%5C%5C3%22%20nil%20nil%29%0D%0A%20%20%20%20%20%20%28setq%20mcount%20%28%2B%201%20mcount%29%29%29%0D%0A%20%20%20%20%28message%20%28format%20%22Replaced%20%25d%20dates%22%20mcount%29%29%29%0D%0A%29%0D%0A%3C%2Fpre%3E _store=1 _add=Elisp _usertab=1 _usersearch=0 _format=full = name=Erlang nameURL=http%3A%2F%2Fwww.erlang.se%2F see= logo=114x96%3Dhttp%3A%2F%2Fwww.erlang.se%2Fimages%2FErlanglogo.gif type=F%20-%20Functional%20or%20lambda-based desc=Erlang%20is%20a%20functional%20programming%20language%0D%0Awith%20concurrency%20and%20object-oriented%20programming%0D%0Afeatures.%20%20It%20was%20designed%20for%20application%0D%0Asoftware%20development%2C%20especially%20large%0D%0Areal-time%20systems.%0D%0A%3Cbr%3E%0D%0AErlang%20uses%20declarative%20syntax%20and%0D%0Apattern-matching%20rules%20for%20function%0D%0Aapplication.%20%20This%20is%20similar%20to%20the%0D%0Aapproach%20used%20by%20Prolog%2C%20Hope%2C%20and%20other%0D%0Aapplicative%20language.%20%20Computations%20in%0D%0AErlang%20are%20mostly%20side-effect%20free.%0D%0AThe%20language%20is%20also%20designed%20to%20support%0D%0Aconcurrency%20and%20distributed%20computing%2C%20%0D%0Abut%20does%20not%20support%20higher-order%20functional%0D%0Aconstructs%20like%20currying%20or%20lazy%20evaluation.%0D%0A%3Cbr%3E%0D%0AExpressions%20and%20functions%20in%20Erlang%20are%0D%0Agenerally%20untyped.%20%20Data%20types%20supported%0D%0Aby%20the%20language%20include%20integers%2C%20reals%2C%20%0D%0Aatoms%20%28which%20also%20serve%20as%20string%20data%29%2C%0D%0Atuples%2C%20lists%2C%20and%20process%20identifiers.%0D%0ATuples%20and%20lists%20can%20be%20heterogenous.%0D%0A%3Cbr%3E%0D%0AFunctions%20in%20Erlang%20are%20defined%20with%0D%0Apatterns.%20%20Pattern%20matching%20is%20used%20for%0D%0Aassignment%20and%20for%20function%20application.%0D%0AFunctions%20belong%20to%20modules%2C%20which%0D%0Aconstitute%20separate%20namespaces.%20%20Functions%0D%0Amust%20be%20explicitly%20exported%20from%20modules%0D%0Ato%20be%20usable%20from%20other%20modules.%0D%0A%3Cbr%3E%0D%0AErlang%20supports%20multiple%20threads%20per%0D%0Aprocess%20and%20multiple%20processes.%0D%0AThe%20concurrency%20model%20in%20Erlang%20is%0D%0Astrictly%20message-based%2C%20there%20is%20no%0D%0Ashared%20memory.%20%0D%0A%3Cbr%3E%0D%0AThe%20first%20implementation%20of%20Erlang%20was%0D%0Aan%20interpreter%20written%20in%20Prolog%2C%20but%0D%0Aall%20current%20implementations%20are%20compilers.%0D%0AAs%20of%20late%201997%20the%20main%20Erlang%0D%0Aimplementations%20come%20from%0D%0AEricsson%20Telecommuncations%20Systems%20in%0D%0ASweden.%0D%0ACommercial%20Erlang%20is%20supported%20on%20a%20wide%0D%0Avariety%20of%20CPUs%20and%20embedded%20operating%0D%0Asystems.%20%20Free%20Erlang%20is%20available%20for%0D%0Anon-commercial%20use%20and%20runs%20%0D%0Aon%20Windows%20and%20some%20Unix%20platforms.%0D%0ADocumentation%20is%20available%20on-line%2C%20and%0D%0Awith%20the%20distributions. origin=J.%20Armstrong%20and%20R.%20Virding%2C%20Ellemtel%20System%20Laboratories%2C%201990 seealso=Hope%2C%20Lisp%2C%20Prolog%2C%20Clean%2C%20ML%2C%20Obliq remark=Erlang%20is%20widely%20used%20at%20Ericsson%20and%20some%0D%0Aother%20telecommunications%20companies%20to%20write%0D%0Ainternal%20software%20%28embedded%20systems%29%20for%0D%0Atelecommunications%20systems.%20%20To%20support%0D%0Asuch%20applications%2C%20Erlang%20allows%20%0D%0Ainterfacing%20and%20interaction%20with%20external%0D%0Adatabases%20and%20libraries%20written%20in%20other%0D%0Aprogramming%20languages.%0D%0A%3Cbr%3E%0D%0AThe%20newest%20version%20of%20Erlang%20includes%20some%0D%0Aadvanced%20functional%20language%20features%2C%20%0D%0Aincluding%20list%20comprehensions.%0D%0A%3Cbr%3E%0D%0ABecause%20Erlang%20is%20intended%20for%20building%0D%0Arobust%20embedded%20systems%2C%20it%20has%20extensive%0D%0Aerror-handling%20features.%20%20It%20also%20permits%0D%0Aloading%20of%20new%20code%20and%20replacement%20code%0D%0Aduring%20execution. links1=Erlang%20at%20Ericsson%20CSL%3Dhttp%3A%2F%2Fwww.ericsson.se%3A800%2Fcslab%2Ferlang%2F links2=High-performance%20Erlang%20at%20Upsala%20U.%3Dhttp%3A%2F%2Fwww.csd.uu.se%2Fprojects%2Fhipe%2F links3=ACM%20Erlang%20Workshop%202002%3Dhttp%3A%2F%2Fwww.erlang.se%2Fworkshop%2F2002%2F links4=Open%20Source%20Erlang%3Dhttp%3A%2F%2Fwww.erlang.org links5=Erlang%20Training%20and%20Consulting%3Dhttp%3A%2F%2Fwww.erlang-consulting.com%2F date=Last%20updated%209%2F28%2F02 sample=A%20version%20of%20Quicksort%20in%20Erlang%2C%20from%20the%20%0D%0Abook%20%3Ci%3EConcurrent%20Programming%20in%20Erlang%3C%2FI%3E.%0D%0A%3Cul%3E%3Cpre%3E%0D%0A-module%28sort%29.%0D%0A-export%28%5Bsort%2F1%5D%29.%0D%0A%0D%0Asort%28%5B%5D%29%20-%26gt%3B%20%5B%5D%3B%0D%0Asort%28%5BPivot%7CRest%5D%29%20-%26gt%3B%0D%0A%20%20%20%7BSmaller%2C%20Bigger%7D%20%3D%20split%28Pivot%2C%20Rest%29%2C%0D%0A%20%20%20lists%3Aappend%28sort%28Smaller%29%2C%20%5BPivot%7Csort%28Bigger%29%5D%29.%0D%0A%0D%0Asplit%28Pivot%2C%20L%29%20-%26gt%3B%0D%0A%20%20%20split%28Pivot%2C%20L%2C%20%5B%5D%2C%20%5B%5D%29.%0D%0Asplit%28Pivot%2C%20%5B%5D%2C%20Smaller%2C%20Bigger%29%20-%26gt%3B%0D%0A%20%20%20%7BSmaller%2C%20Bigger%7D%3B%0D%0Asplit%28Pivot%2C%20%5BHd%7CTl%5D%2C%20Smaller%2C%20Bigger%29%20when%20Hd%20%26lt%3B%20Pivot%20-%26gt%3B%0D%0A%20%20%20split%28Pivot%2C%20Tl%2C%20%5BHd%7CSmaller%5D%2C%20Bigger%29%3B%0D%0Asplit%28Pivot%2C%20%5BHd%7CTl%5D%2C%20Smaller%2C%20Bigger%29%20when%20Hd%20%26gt%3B%3D%20Pivot%20-%26gt%3B%0D%0A%20%20%20split%28Pivot%2C%20T%2C%20Smaller%2C%20%5BHd%7CBigger%5D%29.%0D%0A%3C%2Fpre%3E%3C%2Ful%3E%0D%0A%3Cp%3E%0D%0AAlternative%20version%20using%20Erlang%204.4%20%0D%0Afeatures%3A%0D%0A%3Cul%3E%3Cpre%3E%0D%0A-module%28sort%29.%0D%0A-export%28%5Bsort%2F1%5D%29.%0D%0A%0D%0Asort%28%5BPivot%7CT%5D%29%20-%26gt%3B%0D%0A%20%20%20%20sort%28%5B%20X%20%7C%7C%20X%20%26lt%3B-%20T%2C%20X%20%26lt%3B%20Pivot%5D%29%20%2B%2B%20%5BPivot%5D%20%2B%2B%20%0D%0A%20%20%20%20%20%20%20%20%20%20sort%28%5B%20X%20%7C%7C%20X%20%26lt%3B-%20T%2C%20X%20%26gt%3B%3D%20Pivot%5D%29%3B%0D%0Asort%28%5B%5D%29%20-%26gt%3B%20%5B%5D.%0D%0A%3C%2Fpre%3E%3C%2Ful%3E%0D%0A _store=1 _add=Erlang _usertab=1 _usersearch=0 _format=full = name=Escher nameURL=http%3A%2F%2Fwww.cs.bris.ac.uk%2FResearch%2FDeclarative%2Fescher.html see=Goedel logo= type=F%20-%20Functional%20or%20lambda-based desc=Escher%20is%20a%20declarative%20programming%20language%0D%0Athat%20supports%20both%20functional%20programming%0D%0Aand%20logic%20programming%20models.%20%20It%20was%0D%0Adesigned%20mostly%20as%20a%20research%20and%20teaching%0D%0Avehicle.%0D%0A%3Cbr%3E%0D%0AThe%20basic%20view%20of%20programming%20exhibited%20by%0D%0AEscher%20and%20related%20languages%20is%20the%20a%20program%0D%0Ais%20a%20representation%20of%20a%20theory%20in%20some%20%0D%0Alogic%20framework%2C%20and%20the%0D%0Aprogram%27s%20execution%20%28computation%29%20is%20a%0D%0Adeduction%20from%20the%20theory.%20%20The%20logic%0D%0Aframework%20for%20Escher%20is%20Alonzo%20Church%27s%0D%0Asimple%20theory%20of%20types.%0D%0A%3Cbr%3E%0D%0APrimitive%20atomic%0D%0Adata%20types%20defined%20for%20Escher%20include%3A%0D%0Abooleans%2C%20integers%2C%20characters%2C%20and%0D%0Aprogram%20elements%20%28such%20as%20functions%29.%0D%0AOther%20data%20types%20provided%20by%20the%20base%0D%0Alanguage%20are%20strings%2C%20sets%2C%20and%20lists.%0D%0AReal%20numbers%20are%20apparently%20not%20supported.%0D%0ALike%20most%20declarative%20languages%2C%20Escher%0D%0Asupports%20declarations%20of%20data%20relationships%0D%0Aand%20rules%2C%20which%20imply%20various%20computations%0D%0Aduring%20program%20execution.%0D%0A%3Cbr%3E%20%0D%0AEscher%20supports%20I%2FO%20through%20a%20monadic%20type%0D%0Arepresenting%20the%20%27outside%20world%27.%20%20This%20is%0D%0Amore-or-less%20conventional%20for%20modern%0D%0Adeclarative%20languages.%0D%0A%3Cbr%3E%0D%0AOne%20of%20the%20goals%20of%20Escher%27s%20designers%20was%0D%0Ato%20support%20meta-programming%2C%20and%20so%20the%0D%0Alanguage%20has%20comprehensive%20support%20for%0D%0Agenerating%20and%20transforming%20programs. origin=J.W.%20Lloyd%2C%20University%20of%20Bristol%2C%201995. seealso=Haskell%2C%20Sisal%2C%20Prolog%2C%20FP%2C%20ML remark=Basically%2C%20Escher%20is%20still%20a%20work%20in%20%0D%0Aprogress.%20%20The%20initial%20implementation%20is%20not%0D%0Ayet%20available. links1=Paper%20about%20Escher%3Dhttp%3A%2F%2Fwww.cs.bris.ac.uk%2FTools%2FReports%2FAbstracts%2F1995-lloyd.html links2= links3= links4= links5= date=Last%20updated%202%2F19%2F98 sample=A%20simple%20example%20from%20J.W.%20Lloyd%27s%201995%20paper%3A%0D%0A%3Cpre%3E%0D%0AMODULE%09%20%20%20%20Lambda.%0D%0ACONSTRUCT%20%20%20Person%2F0.%0D%0AFUNCTION%20%20%20%20Jane%2C%20Mary%2C%20John%3A%20One%20-%3E%20Person.%0D%0A%0D%0AFUNCTION%20%20%20%20Mother%20%3A%20Person%20%2A%20Person%20-%3E%20Boolean.%0D%0AMother%28x%2Cy%29%20%3D%3E%20%0D%0A%20%20%20%20x%3DJane%20%26amp%3B%20y%3DMary.%0D%0A%0D%0AFUNCTION%20%20%20%20Wife%20%3A%20Person%20%2A%20Person%20-%3E%20Boolean.%0D%0AWife%28x%2Cy%29%20%3D%3E%0D%0A%20%20%20%20x%3DJohn%20%26amp%3B%20y%3DJane.%0D%0A%0D%0AFUNCTION%20%20%20%20PrimitiveRel%20%3A%20%28Person%20%2A%20Person%20-%3E%20Boolean%29%20-%3E%20Boolean.%0D%0APrimitiveRel%28r%29%20%3D%3E%0D%0A%20%20%20%20r%3DMother%20%5C%2F%20r%3DWife.%0D%0A%0D%0AFUNCTION%20%20%20%20Rel%20%3A%20%28Person%20%2A%20Person%20-%3E%20Boolean%29%20-%3E%20Boolean.%0D%0ARel%28r%29%20%3D%3E%0D%0A%20%20%20%20PrimitiveRel%28r%29%20%5C%2F%0D%0A%20%20%20%20%28SOME%20%5Br1%2Cr2%5D%0D%0A%20%20%20%20%20%20%20%20%28r%20%3D%20LAMBDA%20%5Bu%5D%20%28SOME%20%5Bz%5D%20%28r1%28Fst%28u%29%2Cz%29%20%26amp%3B%20r2%28z%2CSnd%28u%29%29%29%29%20%26amp%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20PrimitiveRel%28r1%29%20%26amp%3B%20PrimitiveRel%28r2%29%29%29.%0D%0A%3C%2Fpre%3E _store=1 _add=Escher _usertab=1 _usersearch=0 _format=full = name=Esterel nameURL=http%3A%2F%2Fwww-sop.inria.fr%2Fmeije%2Festerel%2F see= logo= type=P%20-%20Parallel%20or%20Dataflow desc=The%20Esterel%20language%20is%20a%20modeling%0D%0Aand%20specification%20language%20designed%20for%20the%0D%0Aprogramming%20of%20synchronous%20reactive%20systems.%0D%0ADeveloped%20in%20an%20academic%20setting%2C%20it%20is%0D%0Aused%20for%20studying%20parallel%20computation%20and%0D%0Aalso%20for%20analysis%20and%20implementation%20of%0D%0Adigital%20hardware.%0D%0A%3Cbr%3E%0D%0ABecause%20Esterel%20is%20specialized%20for%20%0D%0Arepresenting%20reactive%2C%20signal-driven%20%0D%0Asystems%2C%20it%20has%20two%20fundamental%20kinds%0D%0Aof%20objects%3A%20data%20elements%20and%20signals.%0D%0AData%20elements%20correspond%20to%20variables%0D%0Ain%20conventional%20structured%20languages%2C%20%0D%0Aand%20may%20be%20declared%20at%20module%20or%20local%0D%0Ascope.%20%20Signals%20and%20sensors%20are%20dynamic%0D%0Avalues%20that%20correspond%20to%20the%0D%0Ainteractions%20of%20the%20system%20being%20modeled%0D%0Awith%20the%20outside%20world.%0D%0APrimitive%20data%20types%20supported%20by%20Esterel%0D%0Ainclude%20booleans%2C%20integers%2C%20reals%2C%20and%0D%0Astrings.%20%20%0D%0A%3Cbr%3E%0D%0AEsterel%20supports%20several%20mechanisms%20of%20code%20%0D%0Aorganization%3A%20modules%2C%20procedures%2C%20functions%2C%0D%0Aand%20tasks.%20%20Parallelism%20and%20condition%0D%0Ahandling%20must%20be%20explicitly%20specified.%0D%0ASynchronization%20is%20normally%20provided%20by%0D%0Areacting%20to%20external%20signals%2C%20using%20the%0D%0A%3Ctt%3Eawait%3C%2Ftt%3E%20statement%20or%20by%20testing%0D%0Afor%20sensor%20values%3B%20output%20can%20be%20specified%0D%0Awith%20the%20%3Ctt%3Eemit%3C%2Ftt%3E%20statement.%0D%0AEsterel%20also%20allows%20a%20programmer%20%28engineer%29%0D%0Ato%20assert%20exclusion%20and%20synchronicity%0D%0Arelationships%20about%20signals.%0D%0A%3Cbr%3E%0D%0AThe%20Esterel%20compiler%20and%20verification%20tools%0D%0Aare%20available%20free%20from%20INRIA%2C%20France.%20%20They%0D%0Arun%20on%20a%20variety%20of%20Unix%20systems.%0D%0AThe%20current%20version%2C%20as%20of%20late%201998%2C%20is%20%0D%0AVersion%205.%20%0D%0A origin=G.%20Berry%2C%20L.%20Cosserat%2C%20%3Ci%3Eet%20al%3C%2Fi%3E%2C%20CMA%20France%2C%201983 seealso=CSP%2C%20Occam%2C%20Lucid%2C%20Reactive-C%2C%20ML%2C%20VHDL remark=The%20Esterel%20language%20is%20designed%20to%20be%20%0D%0Atranslated%20into%20a%20variety%20of%20types%20of%0D%0Ahost%20languages%2C%20depending%20on%20the%0D%0Aintended%20use%20of%20the%20Esterel%20model.%0D%0AAn%20Esterel%20program%20can%20use%20data%20types%0D%0Asupported%20by%20the%20host%20language%20in%0D%0Aaddition%20to%20the%20Esterel%20primitive%20types.%0D%0A%3Cbr%3E%0D%0AWhile%20it%20is%20a%20programming%20language%2C%20Esterel%0D%0Aevolved%20in%20an%20academic%20environment%20that%20is%0D%0Aessentially%20focused%20on%20engineering.%20%20The%0D%0Adesign%20of%20the%20language%20reflects%20the%20priorities%0D%0Aof%20engineers%20designing%20synchronous%20control%0D%0Asystems%20and%20logic%20circuits%2C%20unlike%20languages%0D%0Asuch%20as%20CSP%20which%20reflect%20a%20computer%20science%0D%0Aviewpoint.%20%20 links1=Esterel%20documentation%20and%20download%3Dhttp%3A%2F%2Fwww-sop.inria.fr%2Fmeije%2Festerel%2F links2=Esterel%20programming%20example%20papers%3Dhttp%3A%2F%2Fwww-sop.inria.fr%2Fmeije%2Festerel%2Fdoc%2Fprogram-examples.html links3= links4= links5= date=Last%20updated%2011%2F24%2F98 sample=A%20module%20for%0D%0Acomputing%20a%20running%20average%2C%20%0D%0Afrom%20%3Ci%3EProgramming%20a%20Reflex%20Game%20in%20Esterel%20V3%3C%2Fi%3E%20by%0D%0AR.%20Bernhard%2C%20G.%20Berry%2C%20and%20other%20authors%2C%201989.%0D%0A%3Cp%3E%0D%0A%3Cpre%3E%0D%0Amodule%20AVERAGE%3A%0D%0A%0D%0Ainput%20INCREMENT_AVERAGE%28integer%29%3B%0D%0Aoutput%20AVERAGE_VALUE%28integer%29%3B%0D%0A%0D%0Avar%20TOTAL%20%3A%3D%200%2C%20NUMBER%20%3A%3D%200%2C%20%3A%20integer%20in%0D%0A%20%20%20every%20immediate%20INCREMENT_AVERAGE%20do%0D%0A%20%20%20%20%20%20TOTAL%20%3A%3D%20TOTAL%20%2B%20%3F%20INCREMENT_AVERAGE%3B%0D%0A%20%20%20%20%20%20NUMBER%20%3A%3D%20NUMBER%20%2B%201%3B%0D%0A%20%20%20%20%20%20emit%20AVERAGE_VALUE%20%28TOTAL%20%2F%20NUMBER%29%0D%0A%20%20%20end%0D%0Aend.%0D%0A%3C%2Fpre%3E%0D%0A _store=1 _add=Esterel _usertab=1 _usersearch=0 _format=full = name=Euphoria nameURL=http%3A%2F%2Fwww.RapidEuphoria.com%2F see= logo=166x63%3Dhttp%3A%2F%2Fwww.RapidEuphoria.com%2Feuphoria.gif type=C%20-%20Command%20or%20Scripting desc=Euphoria%20is%20an%20interpreted%20block-structured%0D%0Alanguage%20for%20PCs.%20%20It%20is%20intended%20for%20general%0D%0Aapplication%20development%20and%20game%0D%0Aprogramming.%0D%0A%3Cbr%3E%0D%0AThe%20data%20model%20used%20by%20Euphoria%20is%20quite%0D%0Asimple%3A%20all%20data%20elements%20are%20either%20atoms%0D%0Aor%20sequences.%20All%20atoms%20are%20numeric%3A%20chars%2C%0D%0Aints%2C%20or%20floats.%20%20Sequences%20can%20be%20any%20length%0D%0Aand%20can%20contain%20atoms%20and%20other%20sequences.%0D%0AA%20string%20is%20simply%20a%20sequence%20of%20characters.%0D%0AMore%20complex%20data%20structures%20can%20be%20built%0D%0Aup%20from%20nested%20sequences%20%28as%20in%20Lisp%20or%20Scheme%29.%0D%0AIndexing%20and%20slicing%20are%20important%0D%0Afeatures%2C%20as%20is%20the%20ability%20to%20distribute%0D%0Ascalar%20operations%20over%20sequence%20members.%0D%0AEuphoria%20performs%20type%20checking%2C%0D%0Ato%20the%20extent%20that%20it%20can%20with%20only%20two%0D%0Atypes%2C%20and%20also%20enforces%20sequence%20index%0D%0Abounds%20and%20function%20return%20values.%0D%0ALastly%2C%20Euphoria%20allows%20a%20programmer%20to%0D%0Adefine%20abstract%20data%20types%20operationally%2C%0D%0Aby%20declaring%20for%20each%20such%20type%20a%0D%0Aboolean%20function%20that%20determines%20type%0D%0Amembership.%0D%0A%3Cbr%3E%0D%0AWith%20its%20line-based%20syntax%20and%20simple%20%0D%0Adata%20model%2C%20Euphoria%20is%20intended%20to%0D%0Abe%20a%20very%20easy%0D%0Alanguage%20to%20learn.%0D%0AEuphoria%20supports%20rather%0D%0Aconventional%20sequential%20control%20features%3A%0D%0Aconditionals%20and%20loops.%20%20It%20does%20not%0D%0Asupport%20any%20advanced%20features%20like%0D%0Athreads%2C%20exceptions%2C%20or%20higher-order%0D%0Afunctions.%0D%0A%3Cbr%3E%0D%0AThe%20Euphoria%20language%20system%0D%0Aand%20documentation%20may%20be%20downloaded%20free%0D%0Afrom%20its%20web%20site%20%28see%20below%29%2C%20with%0D%0Amodest%20documentation%20and%20some%20demo%20programs%0D%0Aincluded.%20%20Information%20is%20also%20available%0D%0Aat%20other%20Euphoria%20advocacy%20web%20sites.%0D%0AThe%20current%20implementation%0D%0Aruns%20only%20on%20Windows%2C%20DOS%2C%0D%0Aand%20OS%2F2. origin=R.%20Craig%2C%20Rapid%20Deployment%20Software%2C%201993%3F seealso=C%2C%20Perl%2C%20Basic%2C%20Tcl remark=Euphoria%20stands%20for%0D%0AEnd%20User%20Programming%20with%20Hierarchical%0D%0AObjects%20for%20Robust%20Interpreted%20Applications.%0D%0AThe%20acronym%20is%20relevant%0D%0Abut%20perhaps%20a%20bit%20forced%2C%0D%0Aespecially%20since%20the%20language%20does%20not%0D%0Ainclude%20a%20comprehensive%20exception%20handling%0D%0Amechanism.%0D%0A%3Cbr%3E%0D%0AThe%20Euphoria%20documentation%20claims%20that%20it%0D%0Ais%20extremely%20fast%2C%20due%20to%20an%20internal%0D%0Aarchitecture%20that%20avoids%20data%20copying%20and%0D%0Aperforms%20on-the-fly%20storage%20reclamation.%0D%0AThis%20is%20also%20the%20approach%20used%20by%20Perl%20and%0D%0ATcl.%0D%0A%3Cbr%3E%0D%0ATo%20allow%20its%20use%20for%20general%20application%0D%0Aprogramming%20under%20Windows%2C%20Euphoria%20%0D%0Aallows%20the%20programmer%20to%20load%20any%20Win32%0D%0Adynamic%20link%20library%20and%20call%20functions%20%0D%0Ain%20it.%20%20 links1=Old%20Unofficial%20Euphoria%20web%20site%3Dhttp%3A%2F%2Fwww.ncsc.dni.us%2Ffun%2Fuser%2Ftcc%2Feuphoria%2Feu_home.htm links2=Beginning%20to%20Learn%20Euphoria%3Dhttp%3A%2F%2Fwww.geocities.com%2FSiliconValley%2FVista%2F4346%2F links3=Euphoria%20download%20area%3Dhttp%3A%2F%2Fwww.RapidEuphoria.com%2Fv20.htm links4=Euphoria%20Consortium%20home%20page%3Dhttp%3A%2F%2Ffrontpage.cdc.net%2Fblackdog%2F links5= date=Last%20updated%203%2F25%2F01 sample=%3Cpre%3E%0D%0A--%20Prime%20sieve%20benchmark%2C%20adapted%20from%20Euphoria%202.0beta%20demos%0D%0A%0D%0Aconstant%20ON%20%3D%201%2C%20OFF%20%3D%200%2C%20SIZE%20%3D%205000%2C%20BATCH%20%3D%2020%0D%0A%0D%0Afunction%20sieve%28%29%0D%0A%20%20%20%20sequence%20flags%20%0D%0A%20%20%20%20integer%20prime%2C%20start%2C%20count%2C%20still_prime%0D%0A%20%20%20%20count%20%3D%200%0D%0A%20%20%20%20flags%20%3D%20repeat%28ON%2C%20SIZE%29%0D%0A%20%20%20%20for%20i%20%3D%201%20to%20SIZE%20do%0D%0A%09still_prime%20%3D%20flags%5Bi%5D%0D%0A%09if%20still_prime%20then%0D%0A%09%20%20%20%20prime%20%3D%202%20%2A%20i%20%0D%0A%09%20%20%20%20prime%20%3D%20prime%20%2B%201%20%0D%0A%09%20%20%20%20start%20%3D%20prime%20%2B%20i%0D%0A%09%20%20%20%20for%20k%20%3D%20start%20to%20SIZE%20by%20prime%20do%0D%0A%09%09flags%5Bk%5D%20%3D%20OFF%0D%0A%09%20%20%20%20end%20for%20%0D%0A%09%20%20%20%20count%20%3D%20count%20%2B%201%0D%0A%09end%20if%0D%0A%20%20%20%20end%20for%0D%0A%20%20%20%20return%20count%0D%0Aend%20function%0D%0A%0D%0Aatom%20t%2C%20cycles%2C%20p%0D%0A%0D%0Acycles%20%3D%200%0D%0At%20%3D%20time%28%29%0D%0Awhile%20time%28%29%20%3C%20t%20%2B%2030%20do%20%20--%20test%20for%2030%20seconds%0D%0A%20%20%20%20for%20iter%20%3D%201%20to%20BATCH%20do%0D%0A%09p%20%3D%20sieve%28%29%0D%0A%20%20%20%20end%20for%0D%0A%20%20%20%20cycles%20%3D%20cycles%20%2B%20BATCH%0D%0Aend%20while%0D%0At%20%3D%20time%28%29%20-%20t%0D%0Aprintf%281%2C%20%22%256.1f%20sieves%20per%20second%5Cn%22%2C%20cycles%20%2F%20t%29%0D%0A%3C%2Fpre%3E _store=1 _add=Euphoria _usertab=1 _usersearch=0 _format=full =