Knowledge

Oberon (programming language)

Source đź“ť

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:)

Index


Paradigms
Imperative
structured
modular
object-oriented
Wirth
Designed by
Edit this on Wikidata
Developer
Edit this on Wikidata
Stable release
Typing discipline
Strong
static
dynamic
Scope
Lexical
Platform
ARM
StrongARM
IA-32
x86-64
SPARC
Ceres
NS32032
OS
Windows
Linux
Solaris

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑