94:
79:
29:
3215:
2881:
2566:
2554:
3187:
973:
In the Oberon operating system both of these techniques are used for dynamic dispatch. The first one is used for a known set of methods; the second is used for any new methods declared in the extension module. For example, if the extension module
Rectangles were to implement a new Rotate() procedure,
425:
concept to extend the language. Enumeration and subrange types, which were present in Modula-2, were omitted, and set types are limited to sets of integers. All imported items must be qualified by the name of the module where they are declared. Low-level facilities are highlighted by only allowing
486:
Oberon supports extension of record types for the construction of abstractions and heterogeneous structures. In contrast to the later dialects, Oberon-2 and Active Oberon, the original Oberon lacks a dispatch mechanism as a language feature but has it as a programming technique or design pattern.
1257:
which supports active objects, and the operating systems based thereon (Active Object System (AOS), Bluebottle, A2), and environment (JDK, HTTP, FTP, etc.) for the language. As with many prior designs from ETHZ, versions of both are available for download on the
Internet. As of 2003, supported
412:
in mind: "Make things as simple as possible, but not simpler." The principal guideline was to concentrate on features that are basic and essential and to omit ephemeral issues. Another factor was recognition of the growth of complexity in languages such as
449:
The intent of this strategy was to produce a language that is easier to learn, simpler to implement, and very efficient. Oberon compilers have been viewed as compact and fast, while providing code quality comparable to commercial compilers.
1307:. This includes the features of Oberon and restores some from Pascal (enumerated types, built-in IO) but has some syntactic differences. Other features include support for active objects, operator overloading, and exception handling.
1107:
Oberon-07, defined by
Niklaus Wirth in 2007 and revised in 2008, 2011, 2013, 2014, 2015, and 2016 is based on the original version of Oberon rather than Oberon-2. The main changes are: explicit numeric conversion functions (e.g.,
1218:
is yet another variant of Oberon, which adds objects (with object-centered access protection and local activity control), system-guarded assertions, preemptive priority scheduling and a changed syntax for methods (named
1225:
in Oberon vocabulary). Objects may be active, which means that they may be threads or processes. Further, Active Oberon has a way to implement operators (including overloading), an advanced syntax for using arrays (see
487:
This gives great flexibility in OOP. In the Oberon operating system, two programming techniques are used together for the dispatch call: Method suite and
Message handler.
1140:
statements can only be connected to the end of a function; imported variables and structured value parameters are read-only; and, arrays can be assigned without using
373:
of data. Type extension is Wirth's way of inheritance reflecting the viewpoint of the parent site. Oberon was developed as part of the implementation of an
2033:
1159:(FPGA) Spartan-3 board. Ports of the RISC processor to FPGA Spartan-6, Spartan-7, Artix-7 and a RISC emulator for Windows (compilable on Linux and
3269:
2919:
2028:
Franz, Michael; Fröhlich, Peter H.; Kistler, Thomas (20 November 1999). "Towards language support for component-oriented real-time programming".
1685:
987:
No-cost implementations of Oberon (the language) and Oberon (the operating system) can be found on the
Internet (several are from ETHZ itself).
3264:
1091:
Other compilers include Oxford Oberon-2, which also understands Oberon-07, and Vishap Oberon. The latter is based on Josef Templ's Oberon to
1886:; Gutknecht, JĂĽrg (2006). "Array-Structured Object Types for Mathematical Programming". In Lightfoot, David E.; Szyperski, Clemens (eds.).
3254:
3239:
2570:
2558:
3244:
3203:
1278:
Development continued on languages in this family. A further extension of Oberon-2 was originally named Oberon/L but later renamed to
3249:
2743:
1665:
2107:
369:
types. It permits constructing new data types on the basis of existing ones and to relate them, deviating from the dogma of strict
3208:
2726:
2300:
721:
This technique consists of replacing the set of methods with a single procedure, which discriminates among the various methods:
3259:
2885:
1508:
3198:
2708:
1903:
1927:
1453:
1500:
2939:
2912:
1403:
1287:
1449:
Free Oberon-07 IDE for
Windows, Macintosh, and Linux with syntax colouring, semantic navigation and source code debugger
2944:
2270:
2049:
439:
1029:
implementation of Oberon with some added minor .NET-related extensions was also developed at ETHZ. In 1993, an ETHZ
2949:
2335:
1148:
2604:
2495:
1516:
1147:
Oberon-07 compilers have been developed for use with many different computer systems. Wirth's compiler targets a
3218:
3150:
3023:
2905:
703:(if); if.draw := Draw; if.clear := Clear; if.mark := Mark; if.move := Move
3193:
3171:
3125:
3098:
3073:
3033:
2648:
2275:
1156:
446:
checking, and the safe type extension concept largely allow programming to rely on the language rules alone.
358:
342:
3165:
3068:
3038:
2828:
2636:
2531:
2100:
1363:
334:
1744:
1099:(transpiler) named Ofront, which in turn is based on the OP2 Compiler developed by Regis Crelier at ETHZ.
3140:
3135:
3078:
3058:
2279:
1002:
499:
123:
53:
3083:
2979:
2962:
2500:
2454:
1945:
418:
310:
2211:
2205:
3093:
3048:
2695:
2403:
1335:
1247:
1096:
1085:
378:
366:
302:
1890:. Lecture Notes in Computer Science. Vol. 4228. Springer, Berlin Heidelberg. pp. 195–210.
400:
Oberon was maintained by Wirth and the latest
Project Oberon compiler update is dated 6 March 2020.
3130:
3013:
1468:
1092:
306:
175:
170:
93:
78:
2861:
2093:
1259:
1434:
1230:
and
Proceedings of the 7th Joint Modular Languages Conference 2006 Oxford, UK), and knows about
2999:
1780:
1703:
1679:
1379:
154:
45:
41:
1854:
1484:
2721:
2699:
2409:
1340:
1235:
389:. The name was inspired both by the Voyager space probe's pictures of the moon of the planet
1476:
1227:
2928:
2866:
2789:
2628:
1319:
1204:
361:, and simultaneously to reduce its complexity. Its principal new feature is the concept of
322:
36:
1439:
8:
3004:
2783:
2768:
2597:
2426:
2030:
Proceedings: Fifth
International Workshop on Object-Oriented Real-Time Dependable Systems
1221:
1030:
506:
of this type is declared in the extended module and assigned back in the generic module:
422:
207:
49:
1395:
1184:
2074:
Griesemer, Robert (1993). "A Language for
Numerical Applications on Vector Computers".
2055:
1909:
1646:
1605:
1492:
1311:
1062:. Implementations from other sources exist for some other operating systems, including
182:
86:
1151:(RISC) processor of his own design that was used to implement the 2013 version of the
2984:
2764:
2265:
2236:
2230:
2197:
2045:
1899:
1047:
1022:
224:
2818:
2521:
1913:
1883:
1761:
1699:
1650:
1609:
1387:
2689:
2672:
2460:
2395:
2378:
2059:
2037:
2007:
1969:
1891:
1636:
1597:
1570:
1543:
1279:
1039:
710:
374:
294:
219:
187:
28:
1721:
2439:
2285:
2154:
1670:
1286:
by Oberon microsystems, a commercial spin-off company from ETHZ, and for .NET by
503:
409:
71:
2325:
2012:
1995:
2801:
2716:
2590:
2041:
1504:
H. Mössenböck, N. Wirth, Institut für Computersysteme, ETH Zürich, January 1992
1283:
1183:
produces 32-bit Windows binaries and implements revision 2008 of the language.
1176:
1152:
1074:
1059:
1055:
1026:
435:
236:
232:
162:
3233:
3103:
2676:
2660:
2613:
2516:
2447:
2382:
2360:
2330:
2320:
2174:
2135:
1547:
1315:
1254:
1215:
1175:
implementation targets 32-bit ARM Cortex-M3, M4 and M7 microcontrollers. The
1017:
431:
394:
370:
326:
290:
158:
63:
3155:
2994:
2849:
2833:
1601:
1574:
1539:
1371:
1167:
compiles via C and can be used on any Portable Operating System Interface (
443:
353:). Oberon was the result of a concentrated effort to increase the power of
1445:
1001:
A few changes were made to the first released specification. For example,
713:
is only done via procedures in Figures module that is the generic module.
2758:
2420:
2304:
2222:
1084:
by Stephen J Bevan of Manchester University, UK, based on the one in the
974:
within the Figures module it could only be called via a message handler.
386:
149:
2897:
1895:
1641:
1624:
3063:
2823:
2795:
2526:
2490:
2260:
2162:
1970:
On Certain Basic Properties of Component-Oriented Programming Languages
1954:
1303:
Later .NET development efforts at ETHZ focused on a new language named
1192:
496:
382:
3160:
1267:
1231:
1200:
1188:
1063:
362:
240:
191:
1828:
1426:
1418:
1345:
2668:
2656:
2374:
2291:
2168:
2145:
1996:"Supporting software composition at the programming language level"
1314:) is a descendant of Oberon designed for numerical applications on
1011:
996:
354:
350:
282:
270:
1802:
1542:(Report). ETH Technical Reports D-INFK. Vol. Band 82. Wiley.
3053:
3043:
2854:
2644:
2085:
1947:
The active object system design and multiprocessor implementation
1067:
338:
244:
211:
2582:
1765:
1396:
Project Oberon, The Design of an Operating System and a Compiler
3120:
3088:
2972:
2652:
2466:
2186:
2141:
2116:
1994:
Fröhlich, Peter H.; Gal, Andreas; Franz, Michael (April 2005).
1561:
Wirth, Niklaus (July 1988). "The Programming Language Oberon".
1399:, book in PDF by Niklaus Wirth and JĂĽrg Gutknecht, 2005 Edition
1304:
1081:
390:
346:
298:
199:
3028:
3018:
2989:
2967:
2640:
2180:
1296:
1196:
1168:
1160:
1051:
1021:
which includes an operating system, and can directly boot on
934:
Move(r, msg(Figures.MoveMsg).dx, msg(Figures.MoveMsg).dy)
414:
330:
228:
203:
195:
255:
3110:
1078:
1485:
The Programming Language Oberon (Oberon-7, Revised Oberon)
1410:
1180:
1164:
1033:
company brought a dialect of Oberon-2 to the market named
426:
them to be used in a module which includes the identifier
3145:
3115:
2076:
Proceedings CONPAR 90: VAPP IV Conference, Diss Nr. 10277
1540:
From Modula to Oberon and the programming language Oberon
1263:
1250:, synchronizes and coordinates different active objects.
1172:
1046:
Oberon-2 compilers developed by ETH include versions for
857:(Figures.FigureDesc) x, y, w, h : INTEGER;
421:. In contrast to these, Oberon emphasizes the use of the
397:, and because Oberon is famous as the king of the elves.
2700:
Active Object System (AOS, 2002), Bluebottle (2005), A2
2410:
Active Object System (AOS, 2002), Bluebottle (2005), A2
1364:
Official website (latest available copy at archive org)
835:
We extend the generic type Figure to a specific shape:
603:
We extend the generic type Figure to a specific shape:
1953:(PhD). Swiss Federal Institute of Technology, ZĂĽrich (
1588:
Wirth, Niklaus (July 1988). "From Modula to Oberon".
1322:
architectures. It includes array constructors and an
458:
Features characterizing the Oberon language include:
2027:
1422:
with source code upward-compatible 64 bit addressing
1760:
1698:
1882:
1163:, and binaries available for Windows) also exist.
2034:Institute of Electrical and Electronics Engineers
1745:"Compiler Construction: The Art of Niklaus Wirth"
1136:statements can be used for type extension tests;
3231:
1993:
820:Init* (f : Figure; handle : Handler);
329:and the latest member of the Wirthian family of
977:
1187:produces binaries for both Windows and Linux.
1171:) compatible operating system. The commercial
571:Init* (f : Figure; if : Interface);
408:Oberon is designed with a motto attributed to
2913:
2598:
2101:
1674:. Vol. 16, no. 3. pp. 135–142.
1520:(Changes from Oberon-2 to CP), Pfister (2001)
1300:carry Oberon methods into specialized areas.
625:(Figures.FigureDesc) x, y, w, h :
462:Case sensitive syntax with uppercase keywords
1684:: CS1 maint: numeric names: authors list (
1488:Wirth, (2016, most current language report)
1179:compiler produces 64-bit Windows binaries.
1088:and Wirth reference. It is at version 1.4.
3186:
2920:
2906:
2605:
2591:
2108:
2094:
1975:(Report). University of California, Irvine
1862:ETH Zurich, Department of Computer Science
92:
77:
2927:
2073:
2011:
1967:
1937:
1640:
1629:ACM Transactions on Programming Languages
1310:Oberon-V (originally named Seneca, after
1800:
1493:Differences between Oberon-07 and Oberon
1282:(CP). CP was developed for Windows and
2857:Programming Languages Achievement Award
2744:Algorithms + Data Structures = Programs
2359:
2301:Academy of Sciences of the Soviet Union
1509:Differences between Oberon and Oberon-2
545:(f : Figure); move* :
541:(f : Figure); mark* :
537:(f : Figure); clear* :
3270:Statically typed programming languages
3232:
1943:
1826:
1778:
1742:
1461:
787:msg : Message); FigureDesc* =
3265:Programming languages created in 1986
2901:
2586:
2089:
1852:
1622:
1587:
1560:
1537:
1457:in the January 1994 issue of Dr.Dobbs
1419:Oberon System V4 for HP OpenVMS Alpha
481:
1968:Fröhlich, Peter H.; Franz, Michael.
1666:"Modula's Children, Part II: Oberon"
1663:
1273:
1262:(CPUs) include single and dual core
1009:loop was reinstated. The result was
16:General-purpose programming language
2727:Wirth–Weber precedence relationship
1288:Queensland University of Technology
853:RectangleDesc; RectangleDesc* =
621:RectangleDesc; RectangleDesc* =
529:InterfaceDesc; InterfaceDesc* =
13:
3255:Oberon programming language family
3240:Modula programming language family
2271:Centrum Wiskunde & Informatica
2115:
1855:The Programming Language Oberon-07
1581:
1554:
1531:
716:
453:
14:
3281:
3245:Class-based programming languages
2612:
1719:
1616:
1590:Software: Practice and Experience
1563:Software: Practice and Experience
1501:The Programming Language Oberon-2
3250:Procedural programming languages
3214:
3213:
3185:
2880:
2879:
2565:
2564:
2553:
2552:
1944:Muller, Pieter Johannes (2002).
1414:ARM Oberon-07 Development System
1388:Oberon: The Programming Language
1210:
1149:reduced instruction set computer
962:(r); Figures.Init(r, Handle)
549:(f : Figure; dx, dy :
129:Oberon-07 / 6 March 2020
27:
2496:Johannes Kepler University Linz
2067:
2021:
2000:Science of Computer Programming
1987:
1961:
1920:
1876:
1846:
1820:
1794:
1772:
1764:; Gutknecht, Jürg (1987–2021).
1702:; Gutknecht, Jürg (1987–2021).
1477:The Programming Language Oberon
1005:(OOP) features were added, the
490:
2680:
2386:
1928:"Proposal for Module Contexts"
1754:
1736:
1713:
1692:
1657:
1517:What's New in Component Pascal
1454:Oberon article by Joseph Templ
495:In this technique, a table of
477:Support for system programming
468:Modules and separate compiling
286:
1:
3260:Systems programming languages
2297:elego Software Solutions GmbH
2276:Digital Equipment Corporation
2006:(1–2). Elsevier B.V.: 41–57.
1888:Modular Programming Languages
1853:Wirth, Niklaus (3 May 2016).
1750:. Johannes Kepler University.
1623:Wirth, Niklaus (April 1988).
1524:
1203:is an implementation for the
1157:field-programmable gate array
1155:operating system on a Xilinx
639:if : Figures.Interface;
465:Type-extension with type test
1351:
1102:
978:Implementations and variants
865:Draw* (r : Rectangle);
740:FigureDesc; Message* =
664:Draw* (f : Figure);
656:(r); Figures.Init(r, if)
525:FigureDesc; Interface* =
7:
2013:10.1016/j.scico.2004.11.004
1512:Mössenböck and Wirth (1991)
1372:Niklaus Wirth's Oberon Page
1329:
1228:OberonX language extensions
1003:object-oriented programming
990:
898:r := f(Rectangle);
880:(* Other procedures here *)
695:(* Module initialisation *)
688:(* Other procedures here *)
594:(* Other procedures here *)
434:, even across modules, and
430:in its import list. Strict
325:first published in 1987 by
106:; 37 years ago
10:
3286:
2455:BlackBox Component Builder
2064:Retrieved 21 January 2021.
2042:10.1109/WORDSF.1999.842343
2036:(IEEE). pp. 125–129.
2018:Retrieved 18 January 2021.
1781:"Oxford Oberon-2 compiler"
1356:
1132:statements were extended;
1037:. In 1997, it was renamed
994:
890:msg: Figures.Message);
804:Handle* (f : Figure;
796:handle : Handler;
772:(Message) dx*, dy* :
357:, the direct successor of
3181:
2958:
2935:
2875:
2842:
2811:
2776:
2757:
2735:
2707:
2688:
2627:
2620:
2548:
2509:
2483:
2476:
2438:
2419:
2394:
2368:
2352:
2313:
2253:
2246:
2221:
2196:
2153:
2134:
2127:
1827:jtempl (2 January 2020).
1801:dcwbrown (16 June 2020).
1664:Pountain, D. March 1991.
1404:Oberon Language Genealogy
1336:Oberon (operating system)
1290:. Further, the languages
1128:statements were omitted;
1097:source-to-source compiler
982:
583:Draw* (f : Figure);
403:
281:
276:
269:
264:
250:
218:
181:
169:
148:
144:
122:
118:
100:
85:
70:
59:
35:
26:
1803:"Vishap Oberon Compiler"
1548:10.3929/ethz-a-005363226
1435:Oxford Oberon-2 Compiler
1427:64 bit Oberon-2 compiler
1260:central processing units
824:f.handle := handle
672:r := f(Rectangle);
563:if : Interface;
2862:Computer History Museum
2829:de:Hanspeter Mössenböck
2532:de:Hanspeter Mössenböck
2280:Systems Research Center
2266:Modula Computer Systems
1779:Spivey (8 April 2019).
1743:Mössenböck, Hanspeter.
1538:Wirth, Niklaus (1987).
1318:, especially vector or
1234:. The operating system
2501:Oberon microsystems AG
1602:10.1002/spe.4380180706
1575:10.1002/spe.4380180707
2929:Programming languages
2722:Wirth syntax notation
2294:Research Center (ORC)
1341:A2 (operating system)
1222:type-bound procedures
1197:online IDE for Oberon
1191:translates Oberon to
1073:There is an Oberon-2
1015:. One release, named
955:r : Rectangle);
808:msg : Message);
730:(* Abstract module *)
647:r : Rectangle);
515:(* Abstract module *)
474:Isolating unsafe code
321:is a general-purpose
131:; 4 years ago
2867:Marcel Benoist Prize
2790:University of Zurich
1240:Active Object System
1205:Java virtual machine
1116:) must be used; the
894:r : Rectangle;
886:Handle* (f: Figure;
675:(* f AS Rectangle *)
668:r : Rectangle;
323:programming language
2784:Stanford University
1896:10.1007/11860990_13
1722:"Oberon Change Log"
1642:10.1145/42190.46167
1469:Modula-2 and Oberon
1462:Evolution of Oberon
1346:Oberon on Wikibooks
1031:university spin-off
559:; FigureDesc* =
101:First appeared
91:Niklaus Wirth
76:Niklaus Wirth
23:
2804:(1976–77, 1984–85)
1446:Free Oberon-07 IDE
1312:Seneca the Younger
1253:ETHZ has released
1246:), especially the
1025:class hardware. A
783:(f : Figure;
779:; Handler* =
768:; MoveMsg* =
760:; MarkMsg* =
752:; ClearMsg* =
744:; DrawMsg* =
482:Object orientation
21:
3227:
3226:
3209:Non-English-based
2895:
2894:
2753:
2752:
2690:Operating systems
2580:
2579:
2544:
2543:
2540:
2539:
2434:
2433:
2396:Operating systems
2348:
2347:
2344:
2343:
2198:Operating systems
1905:978-3-540-40927-4
1625:"Type Extensions"
1430:for OpenVMS Alpha
1274:Related languages
1048:Microsoft Windows
1023:IBM PC compatible
812:f.handle(f, msg)
502:is defined and a
471:String operations
333:-like languages (
316:
315:
150:Typing discipline
3277:
3217:
3216:
3189:
3188:
2922:
2915:
2908:
2899:
2898:
2883:
2882:
2625:
2624:
2607:
2600:
2593:
2584:
2583:
2571:Category: Oberon
2568:
2567:
2559:Category: Modula
2556:
2555:
2481:
2480:
2461:Component Pascal
2366:
2365:
2357:
2356:
2251:
2250:
2132:
2131:
2110:
2103:
2096:
2087:
2086:
2080:
2079:
2071:
2065:
2063:
2025:
2019:
2017:
2015:
1991:
1985:
1984:
1982:
1980:
1974:
1965:
1959:
1958:
1952:
1941:
1935:
1934:
1932:
1924:
1918:
1917:
1884:Friedrich, Felix
1880:
1874:
1873:
1871:
1869:
1859:
1850:
1844:
1843:
1841:
1839:
1824:
1818:
1817:
1815:
1813:
1798:
1792:
1791:
1789:
1787:
1776:
1770:
1769:
1766:"Project Oberon"
1758:
1752:
1751:
1749:
1740:
1734:
1733:
1731:
1729:
1720:Wirth, Niklaus.
1717:
1711:
1710:
1708:
1704:"Project Oberon"
1696:
1690:
1689:
1683:
1675:
1661:
1655:
1654:
1644:
1620:
1614:
1613:
1585:
1579:
1578:
1558:
1552:
1551:
1535:
1480:Wirth, (1988/90)
1325:
1280:Component Pascal
1143:
1139:
1135:
1131:
1127:
1123:
1119:
1115:
1111:
1040:Component Pascal
1008:
940:
930:Figures.MoveMsg
918:Figures.MarkMsg
906:Figures.DrawMsg
881:
872:
794:
731:
711:Dynamic dispatch
701:
696:
689:
681:
676:
654:
629:
595:
575:f.if := if
553:
516:
429:
375:operating system
295:Component Pascal
260:
257:
139:
137:
132:
114:
112:
107:
96:
81:
72:Designed by
31:
24:
20:
3285:
3284:
3280:
3279:
3278:
3276:
3275:
3274:
3230:
3229:
3228:
3223:
3177:
2954:
2931:
2926:
2896:
2891:
2871:
2838:
2807:
2772:
2749:
2731:
2703:
2684:
2630:
2616:
2611:
2581:
2576:
2536:
2505:
2472:
2430:
2415:
2390:
2340:
2309:
2288:Research Center
2242:
2217:
2208:(1983, Knudsen)
2192:
2149:
2123:
2114:
2084:
2083:
2072:
2068:
2052:
2026:
2022:
1992:
1988:
1978:
1976:
1972:
1966:
1962:
1950:
1942:
1938:
1930:
1926:
1925:
1921:
1906:
1881:
1877:
1867:
1865:
1857:
1851:
1847:
1837:
1835:
1825:
1821:
1811:
1809:
1799:
1795:
1785:
1783:
1777:
1773:
1759:
1755:
1747:
1741:
1737:
1727:
1725:
1718:
1714:
1706:
1697:
1693:
1677:
1676:
1662:
1658:
1621:
1617:
1586:
1582:
1559:
1555:
1536:
1532:
1527:
1464:
1359:
1354:
1332:
1323:
1276:
1213:
1141:
1137:
1133:
1129:
1125:
1121:
1117:
1113:
1109:
1105:
1006:
999:
993:
985:
980:
971:
938:
879:
870:
833:
792:
729:
719:
717:Message handler
708:
699:
694:
687:
679:
674:
652:
627:
601:
593:
551:
514:
504:global variable
493:
484:
456:
454:Characteristics
427:
410:Albert Einstein
406:
254:
140:
135:
133:
130:
110:
108:
105:
54:object-oriented
17:
12:
11:
5:
3283:
3273:
3272:
3267:
3262:
3257:
3252:
3247:
3242:
3225:
3224:
3222:
3221:
3211:
3206:
3201:
3196:
3182:
3179:
3178:
3176:
3175:
3168:
3163:
3158:
3153:
3148:
3143:
3138:
3133:
3128:
3123:
3118:
3113:
3108:
3107:
3106:
3096:
3091:
3086:
3081:
3076:
3071:
3066:
3061:
3056:
3051:
3046:
3041:
3036:
3031:
3026:
3021:
3016:
3011:
3010:
3009:
3008:
3007:
3002:
2987:
2982:
2977:
2976:
2975:
2965:
2959:
2956:
2955:
2953:
2952:
2947:
2942:
2936:
2933:
2932:
2925:
2924:
2917:
2910:
2902:
2893:
2892:
2890:
2889:
2876:
2873:
2872:
2870:
2869:
2864:
2860:Fellow of the
2858:
2852:
2846:
2844:
2840:
2839:
2837:
2836:
2831:
2826:
2821:
2819:JĂĽrg Gutknecht
2815:
2813:
2809:
2808:
2806:
2805:
2799:
2793:
2787:
2780:
2778:
2774:
2773:
2763:
2761:
2755:
2754:
2751:
2750:
2748:
2747:
2739:
2737:
2733:
2732:
2730:
2729:
2724:
2719:
2713:
2711:
2705:
2704:
2694:
2692:
2686:
2685:
2635:
2633:
2622:
2618:
2617:
2610:
2609:
2602:
2595:
2587:
2578:
2577:
2575:
2574:
2562:
2549:
2546:
2545:
2542:
2541:
2538:
2537:
2535:
2534:
2529:
2524:
2522:JĂĽrg Gutknecht
2519:
2513:
2511:
2507:
2506:
2504:
2503:
2498:
2493:
2487:
2485:
2478:
2474:
2473:
2471:
2470:
2464:
2458:
2451:
2444:
2442:
2436:
2435:
2432:
2431:
2425:
2423:
2417:
2416:
2414:
2413:
2407:
2400:
2398:
2392:
2391:
2369:
2363:
2354:
2350:
2349:
2346:
2345:
2342:
2341:
2339:
2338:
2333:
2328:
2323:
2317:
2315:
2311:
2310:
2308:
2307:
2298:
2295:
2289:
2283:
2273:
2268:
2263:
2257:
2255:
2248:
2244:
2243:
2241:
2240:
2239:(1988, Soviet)
2234:
2227:
2225:
2219:
2218:
2216:
2215:
2214:(1988, Soviet)
2209:
2202:
2200:
2194:
2193:
2191:
2190:
2184:
2178:
2172:
2166:
2159:
2157:
2151:
2150:
2140:
2138:
2129:
2125:
2124:
2113:
2112:
2105:
2098:
2090:
2082:
2081:
2066:
2050:
2020:
1986:
1960:
1936:
1919:
1904:
1875:
1845:
1819:
1793:
1771:
1762:Wirth, Niklaus
1753:
1735:
1712:
1700:Wirth, Niklaus
1691:
1656:
1635:(2): 204–214.
1615:
1596:(7): 671–690.
1580:
1569:(7): 661–670.
1553:
1529:
1528:
1526:
1523:
1522:
1521:
1513:
1505:
1497:
1489:
1481:
1473:
1463:
1460:
1459:
1458:
1450:
1442:
1431:
1423:
1415:
1407:
1400:
1392:
1384:
1376:
1368:
1358:
1355:
1353:
1350:
1349:
1348:
1343:
1338:
1331:
1328:
1316:supercomputers
1284:classic Mac OS
1275:
1272:
1212:
1209:
1153:Project Oberon
1104:
1101:
1060:classic Mac OS
995:Main article:
992:
989:
984:
981:
979:
976:
837:
793:(* Abstract *)
723:
718:
715:
605:
533:draw* :
508:
492:
489:
483:
480:
479:
478:
475:
472:
469:
466:
463:
455:
452:
436:index checking
405:
402:
314:
313:
279:
278:
274:
273:
267:
266:
262:
261:
252:
248:
247:
237:classic Mac OS
222:
216:
215:
185:
179:
178:
173:
167:
166:
152:
146:
145:
142:
141:
128:
126:
124:Stable release
120:
119:
116:
115:
102:
98:
97:
89:
83:
82:
74:
68:
67:
61:
57:
56:
39:
33:
32:
15:
9:
6:
4:
3:
2:
3282:
3271:
3268:
3266:
3263:
3261:
3258:
3256:
3253:
3251:
3248:
3246:
3243:
3241:
3238:
3237:
3235:
3220:
3212:
3210:
3207:
3205:
3202:
3200:
3197:
3195:
3192:
3184:
3183:
3180:
3174:
3173:
3169:
3167:
3164:
3162:
3159:
3157:
3154:
3152:
3149:
3147:
3144:
3142:
3139:
3137:
3134:
3132:
3129:
3127:
3124:
3122:
3119:
3117:
3114:
3112:
3109:
3105:
3104:Object Pascal
3102:
3101:
3100:
3097:
3095:
3092:
3090:
3087:
3085:
3082:
3080:
3077:
3075:
3072:
3070:
3067:
3065:
3062:
3060:
3057:
3055:
3052:
3050:
3047:
3045:
3042:
3040:
3037:
3035:
3032:
3030:
3027:
3025:
3022:
3020:
3017:
3015:
3012:
3006:
3003:
3001:
2998:
2997:
2996:
2993:
2992:
2991:
2988:
2986:
2983:
2981:
2978:
2974:
2971:
2970:
2969:
2966:
2964:
2961:
2960:
2957:
2951:
2948:
2946:
2943:
2941:
2938:
2937:
2934:
2930:
2923:
2918:
2916:
2911:
2909:
2904:
2903:
2900:
2888:
2887:
2878:
2877:
2874:
2868:
2865:
2863:
2859:
2856:
2853:
2851:
2848:
2847:
2845:
2841:
2835:
2832:
2830:
2827:
2825:
2822:
2820:
2817:
2816:
2814:
2812:Collaborators
2810:
2803:
2800:
2797:
2794:
2791:
2788:
2785:
2782:
2781:
2779:
2775:
2770:
2766:
2762:
2760:
2756:
2746:
2745:
2741:
2740:
2738:
2734:
2728:
2725:
2723:
2720:
2718:
2715:
2714:
2712:
2710:
2706:
2701:
2697:
2696:Oberon System
2693:
2691:
2687:
2682:
2678:
2677:Active Oberon
2674:
2670:
2666:
2662:
2661:Object Pascal
2658:
2654:
2650:
2646:
2642:
2638:
2634:
2632:
2626:
2623:
2619:
2615:
2614:Niklaus Wirth
2608:
2603:
2601:
2596:
2594:
2589:
2588:
2585:
2573:
2572:
2563:
2561:
2560:
2551:
2550:
2547:
2533:
2530:
2528:
2525:
2523:
2520:
2518:
2517:Niklaus Wirth
2515:
2514:
2512:
2508:
2502:
2499:
2497:
2494:
2492:
2489:
2488:
2486:
2484:Organizations
2482:
2479:
2475:
2468:
2465:
2462:
2459:
2456:
2452:
2449:
2448:Object Oberon
2446:
2445:
2443:
2441:
2437:
2428:
2424:
2422:
2418:
2411:
2408:
2405:
2404:Oberon System
2402:
2401:
2399:
2397:
2393:
2388:
2384:
2383:Active Oberon
2380:
2376:
2372:
2367:
2364:
2362:
2358:
2355:
2351:
2337:
2334:
2332:
2331:Luca Cardelli
2329:
2327:
2324:
2322:
2321:Niklaus Wirth
2319:
2318:
2316:
2312:
2306:
2302:
2299:
2296:
2293:
2290:
2287:
2284:
2281:
2277:
2274:
2272:
2269:
2267:
2264:
2262:
2259:
2258:
2256:
2254:Organizations
2252:
2249:
2245:
2238:
2235:
2233:(1980, Wirth)
2232:
2229:
2228:
2226:
2224:
2220:
2213:
2210:
2207:
2204:
2203:
2201:
2199:
2195:
2188:
2185:
2182:
2179:
2176:
2175:Baby Modula-3
2173:
2170:
2167:
2164:
2161:
2160:
2158:
2156:
2152:
2147:
2143:
2139:
2137:
2133:
2130:
2126:
2122:
2118:
2111:
2106:
2104:
2099:
2097:
2092:
2091:
2088:
2078:. ETH Zurich.
2077:
2070:
2061:
2057:
2053:
2051:0-7695-0616-X
2047:
2043:
2039:
2035:
2031:
2024:
2014:
2009:
2005:
2001:
1997:
1990:
1971:
1964:
1956:
1949:
1948:
1940:
1929:
1923:
1915:
1911:
1907:
1901:
1897:
1893:
1889:
1885:
1879:
1863:
1856:
1849:
1834:
1830:
1823:
1808:
1804:
1797:
1782:
1775:
1767:
1763:
1757:
1746:
1739:
1723:
1716:
1705:
1701:
1695:
1687:
1681:
1680:cite magazine
1673:
1672:
1667:
1660:
1652:
1648:
1643:
1638:
1634:
1630:
1626:
1619:
1611:
1607:
1603:
1599:
1595:
1591:
1584:
1576:
1572:
1568:
1564:
1557:
1549:
1545:
1541:
1534:
1530:
1519:
1518:
1514:
1511:
1510:
1506:
1503:
1502:
1498:
1495:
1494:
1490:
1487:
1486:
1482:
1479:
1478:
1474:
1471:
1470:
1466:
1465:
1456:
1455:
1451:
1448:
1447:
1443:
1441:
1437:
1436:
1432:
1429:
1428:
1424:
1421:
1420:
1416:
1413:
1412:
1408:
1406:
1405:
1401:
1398:
1397:
1393:
1390:
1389:
1385:
1382:
1381:
1377:
1375:at ETH-ZĂĽrich
1374:
1373:
1369:
1367:at ETH-ZĂĽrich
1366:
1365:
1361:
1360:
1347:
1344:
1342:
1339:
1337:
1334:
1333:
1327:
1321:
1317:
1313:
1308:
1306:
1301:
1299:
1298:
1293:
1289:
1285:
1281:
1271:
1269:
1265:
1261:
1256:
1255:Active Oberon
1251:
1249:
1245:
1241:
1237:
1233:
1229:
1224:
1223:
1217:
1216:Active Oberon
1211:Active Oberon
1208:
1206:
1202:
1198:
1194:
1190:
1186:
1182:
1178:
1174:
1170:
1166:
1162:
1158:
1154:
1150:
1145:
1100:
1098:
1094:
1089:
1087:
1083:
1080:
1076:
1071:
1069:
1065:
1061:
1057:
1053:
1049:
1044:
1042:
1041:
1036:
1032:
1028:
1024:
1020:
1019:
1018:Native Oberon
1014:
1013:
1004:
998:
988:
975:
969:
965:
961:
958:
954:
950:
946:
943:
937:
933:
929:
925:
921:
917:
913:
909:
905:
901:
897:
893:
889:
885:
882:
876:
873:
868:
864:
860:
856:
852:
849:Rectangle* =
848:
844:
840:
836:
831:
827:
823:
819:
815:
811:
807:
803:
799:
795:
790:
786:
782:
778:
775:
771:
767:
763:
759:
755:
751:
747:
743:
739:
736:Figure* =
735:
732:
726:
722:
714:
712:
706:
702:
697:
692:
685:
682:
677:
671:
667:
663:
659:
655:
650:
646:
642:
638:
634:
630:
624:
620:
617:Rectangle* =
616:
612:
608:
604:
599:
596:
590:
587:f.if.draw(f)
586:
582:
578:
574:
570:
566:
562:
558:
554:
548:
544:
540:
536:
532:
528:
524:
521:Figure* =
520:
517:
511:
507:
505:
501:
498:
488:
476:
473:
470:
467:
464:
461:
460:
459:
451:
447:
445:
441:
437:
433:
432:type checking
424:
420:
416:
411:
401:
398:
396:
392:
388:
384:
380:
377:, also named
376:
372:
371:static typing
368:
365:extension of
364:
360:
356:
352:
348:
344:
340:
336:
332:
328:
327:Niklaus Wirth
324:
320:
312:
308:
304:
300:
296:
292:
291:Active Oberon
288:
284:
280:
275:
272:
268:
265:Influenced by
263:
259:
256:projectoberon
253:
249:
246:
242:
238:
234:
230:
226:
223:
221:
217:
213:
209:
205:
201:
197:
193:
189:
186:
184:
180:
177:
174:
172:
168:
164:
160:
156:
153:
151:
147:
143:
127:
125:
121:
117:
103:
99:
95:
90:
88:
84:
80:
75:
73:
69:
65:
62:
58:
55:
51:
47:
43:
40:
38:
34:
30:
25:
19:
3204:Generational
3194:Alphabetical
3190:
3170:
2995:Visual Basic
2884:
2850:Turing Award
2834:Larry Tesler
2759:Workstations
2742:
2664:
2569:
2557:
2370:
2326:MartĂn Abadi
2223:Workstations
2120:
2075:
2069:
2029:
2023:
2003:
1999:
1989:
1977:. Retrieved
1963:
1946:
1939:
1922:
1887:
1878:
1866:. Retrieved
1861:
1848:
1836:. Retrieved
1832:
1822:
1810:. Retrieved
1806:
1796:
1784:. Retrieved
1774:
1756:
1738:
1726:. Retrieved
1724:. ETH Zurich
1715:
1694:
1669:
1659:
1632:
1628:
1618:
1593:
1589:
1583:
1566:
1562:
1556:
1533:
1515:
1507:
1499:
1496:Wirth (2011)
1491:
1483:
1475:
1472:Wirth (2005)
1467:
1452:
1444:
1433:
1425:
1417:
1409:
1402:
1394:
1386:
1383:at SSW, Linz
1378:
1370:
1362:
1309:
1302:
1295:
1291:
1277:
1252:
1243:
1242:(AOS), then
1239:
1220:
1214:
1146:
1106:
1090:
1077:scanner and
1072:
1045:
1038:
1034:
1016:
1010:
1000:
986:
972:
970:Rectangles.
967:
963:
959:
956:
952:
948:
944:
941:
939:(* ignore *)
935:
931:
927:
923:
919:
915:
911:
907:
903:
899:
895:
891:
887:
883:
878:
874:
869:
866:
862:
858:
854:
850:
846:
842:
841:Rectangles;
838:
834:
829:
825:
821:
817:
813:
809:
805:
801:
797:
791:
788:
784:
780:
776:
773:
769:
765:
761:
757:
753:
749:
745:
741:
737:
733:
728:
724:
720:
709:
707:Rectangles.
704:
698:
693:
690:
683:
678:
673:
669:
665:
661:
657:
651:
648:
644:
640:
636:
632:
626:
622:
618:
614:
610:
609:Rectangles;
606:
602:
597:
592:
588:
584:
580:
576:
572:
568:
564:
560:
556:
550:
546:
542:
538:
534:
530:
526:
522:
518:
513:
509:
494:
491:Method suite
485:
457:
448:
444:null pointer
407:
399:
318:
317:
18:
3199:Categorical
2717:Wirth's law
2629:Programming
2421:Workstation
2336:Greg Nelson
2305:Novosibirsk
1440:User Manual
1380:Oberon Page
1326:statement.
1195:. There is
922:Mark(r)
910:Draw(r)
387:Switzerland
3234:Categories
3064:JavaScript
2940:Comparison
2824:Tony Hoare
2802:Xerox PARC
2796:ETH Zurich
2777:Workplaces
2709:Formalisms
2527:Tony Hoare
2491:ETH Zurich
2477:Developers
2453:Oberon/F,
2261:ETH Zurich
2247:Developers
1979:18 January
1955:ETH Zurich
1868:17 January
1838:17 January
1812:17 January
1786:17 January
1728:16 January
1525:References
1244:Bluebottle
1238:(formerly
1232:namespaces
1193:JavaScript
1181:Oberon-07M
1086:Mössenböck
851:POINTER TO
764:(Message)
756:(Message)
748:(Message)
742:RECORD END
738:POINTER TO
619:POINTER TO
527:POINTER TO
523:POINTER TO
383:ETH Zurich
277:Influenced
157:, hybrid (
136:2020-03-06
46:structured
42:Imperative
3161:Smalltalk
2798:(1968–99)
2792:(1963–67)
2786:(1963–67)
2767:(1977) →
2698:(1987) →
2681:Oberon-07
2679:(1998) →
2675:(1995) →
2671:(1991) →
2667:(1987) →
2663:(1986) →
2659:(1978) →
2655:(1975) →
2651:(1970) →
2647:(1966) →
2643:(1966) →
2639:(1965) →
2631:languages
2440:By others
2387:Oberon-07
2385:(1998) →
2381:(1995) →
2377:(1991) →
2373:(1987) →
2212:Excelsior
2163:Modula-2+
2155:By others
2144:(1975) →
1352:Resources
1320:pipelined
1268:StrongARM
1177:Patchouli
1103:Oberon-07
1095:language
1064:Atari TOS
949:PROCEDURE
884:PROCEDURE
871:(* ... *)
863:PROCEDURE
845:Figures;
832:Figures.
818:PROCEDURE
802:PROCEDURE
781:PROCEDURE
727:Figures;
680:(* ... *)
662:PROCEDURE
641:PROCEDURE
613:Figures;
600:Figures.
581:PROCEDURE
569:PROCEDURE
547:PROCEDURE
543:PROCEDURE
539:PROCEDURE
535:PROCEDURE
512:Figures;
500:variables
497:procedure
363:data type
307:V (Vlang)
287:Oberon-07
241:Atari TOS
192:StrongARM
87:Developer
37:Paradigms
3219:Category
2985:Assembly
2945:Timeline
2886:Category
2669:Oberon-2
2657:Modula-2
2621:Software
2375:Oberon-2
2361:By Wirth
2292:Olivetti
2169:Modula-3
2146:Modula-2
2136:By Wirth
1914:34210781
1864:(Report)
1829:"Ofront"
1651:15829497
1610:13092279
1438:and its
1330:See also
1189:OberonJS
1035:Oberon-L
1012:Oberon-2
997:Oberon-2
991:Oberon-2
947:Handle;
816:Handle;
393:, named
355:Modula-2
351:Modula-2
283:Oberon-2
271:Modula-2
183:Platform
3172:more...
3151:Scratch
3054:Haskell
3044:Fortran
3000:classic
2950:History
2855:SIGPLAN
2645:ALGOL W
2206:Medos-2
2060:6891092
1411:Astrobe
1357:General
1292:Lagoona
1201:oberonc
1185:Akron's
1173:Astrobe
1068:AmigaOS
1056:Solaris
774:INTEGER
628:INTEGER
552:INTEGER
440:runtime
423:library
339:ALGOL W
251:Website
245:AmigaOS
233:Solaris
225:Windows
212:NS32032
176:Lexical
163:dynamic
134: (
109: (
50:modular
3191:Lists:
3126:Python
3121:Prolog
3099:Pascal
3089:MATLAB
3074:Kotlin
3034:Erlang
2973:Simula
2843:Awards
2771:(1985)
2765:Lilith
2702:(2008)
2683:(2007)
2665:Oberon
2653:Modula
2649:Pascal
2510:People
2469:(2013)
2467:Zonnon
2463:(1997)
2457:(1993)
2450:(1989)
2429:(1985)
2412:(2008)
2406:(1987)
2389:(2007)
2371:Oberon
2353:Oberon
2314:People
2278:(DEC)
2237:Kronos
2231:Lilith
2189:(1997)
2187:Alma-0
2183:(1993)
2177:(1993)
2171:(1988)
2165:(1984)
2148:(1978)
2142:Modula
2128:Modula
2121:Oberon
2117:Modula
2058:
2048:
1912:
1902:
1833:GitHub
1807:GitHub
1649:
1608:
1391:at Ulm
1305:Zonnon
1266:, and
1248:kernel
1138:RETURN
1082:parser
1058:, and
983:Oberon
951:New* (
877:Draw;
855:RECORD
843:IMPORT
839:MODULE
828:Init;
789:RECORD
770:RECORD
762:RECORD
754:RECORD
746:RECORD
725:MODULE
686:Draw;
643:New* (
623:RECORD
611:IMPORT
607:MODULE
591:Draw;
579:Init;
561:RECORD
555:);
531:RECORD
510:MODULE
428:SYSTEM
404:Design
395:Oberon
391:Uranus
379:Oberon
367:record
359:Pascal
349:, and
347:Modula
343:Pascal
319:Oberon
299:Zonnon
200:x86-64
159:static
155:Strong
66:Oberon
60:Family
22:Oberon
3166:Swift
3156:Shell
3069:Julia
3039:Forth
3029:COBOL
2990:BASIC
2968:ALGOL
2769:Ceres
2736:Books
2641:PL360
2637:Euler
2427:Ceres
2286:Acorn
2282:(SRC)
2181:Obliq
2056:S2CID
1973:(PDF)
1951:(PDF)
1931:(PDF)
1910:S2CID
1858:(PDF)
1748:(PDF)
1707:(PDF)
1647:S2CID
1606:S2CID
1297:Obliq
1169:POSIX
1161:macOS
1130:WHILE
1110:FLOOR
1052:Linux
966:New;
957:BEGIN
924:ELSIF
912:ELSIF
896:BEGIN
867:BEGIN
822:BEGIN
810:BEGIN
691:BEGIN
670:BEGIN
660:New;
649:BEGIN
631:;
585:BEGIN
573:BEGIN
335:Euler
331:ALGOL
229:Linux
208:Ceres
204:SPARC
196:IA-32
171:Scope
64:Wirth
3141:Rust
3136:Ruby
3111:Perl
3079:Lisp
3059:Java
3005:.NET
2673:Lola
2379:Lola
2046:ISBN
1981:2021
1900:ISBN
1870:2021
1840:2021
1814:2021
1788:2021
1730:2021
1686:link
1671:Byte
1294:and
1165:OBNC
1142:COPY
1134:CASE
1126:EXIT
1124:and
1122:LOOP
1118:WITH
1112:and
1079:Yacc
1066:and
1027:.NET
936:ELSE
932:THEN
926:msg
920:THEN
914:msg
908:THEN
902:msg
847:TYPE
734:TYPE
615:TYPE
519:TYPE
417:and
258:.net
161:and
111:1987
104:1987
3146:SQL
3116:PHP
3084:Lua
3019:C++
2980:APL
2963:Ada
2038:doi
2008:doi
1892:doi
1637:doi
1598:doi
1571:doi
1544:doi
1324:ALL
1264:x86
1114:FLT
1075:Lex
1007:FOR
968:END
964:END
960:NEW
953:VAR
945:END
942:END
892:VAR
888:VAR
875:END
859:END
830:END
826:END
814:END
806:VAR
798:END
785:VAR
777:END
766:END
758:END
750:END
705:END
700:NEW
684:END
666:VAR
658:END
653:NEW
645:VAR
637:VAR
633:END
598:END
589:END
577:END
565:END
557:END
438:at
419:Ada
415:C++
385:in
381:at
311:Nim
188:ARM
3236::
3094:ML
3049:Go
3024:C#
2303:,
2119:,
2054:.
2044:.
2032:.
2004:56
2002:.
1998:.
1957:).
1908:.
1898:.
1860:.
1831:.
1805:.
1682:}}
1678:{{
1668:.
1645:.
1633:10
1631:.
1627:.
1604:.
1594:18
1592:.
1567:18
1565:.
1270:.
1236:A2
1207:.
1199:.
1144:.
1120:,
1070:.
1054:,
1050:,
1043:.
928:IS
916:IS
904:IS
900:IF
861:;
800:;
635:;
567:;
442:,
345:,
341:,
337:,
309:,
305:,
303:Go
301:,
297:,
293:,
289:,
285:,
243:,
239:,
235:,
231:,
227:,
220:OS
206:,
202:;
198:,
194:;
190:,
52:,
48:,
44:,
3131:R
3014:C
2921:e
2914:t
2907:v
2606:e
2599:t
2592:v
2109:e
2102:t
2095:v
2062:.
2040::
2016:.
2010::
1983:.
1933:.
1916:.
1894::
1872:.
1842:.
1816:.
1790:.
1768:.
1732:.
1709:.
1688:)
1653:.
1639::
1612:.
1600::
1577:.
1573::
1550:.
1546::
1093:C
214:)
210:(
165:)
138:)
113:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.