Knowledge (XXG)

SuperPascal

Source 📝

293:: a thinking tool to enable the clear and concise expression of concepts in parallel programming. This is in contrast with implementation languages which are often complicated with machine details and historical conventions. It was created to address the need at the time for a parallel publication language. Arguably, few languages today are expressive and concise enough to be used as thinking tools. 25: 1873:
Free Pascal also needs a solution to the above "clock" problem (On windows, just declare gettickcount as external with "clock" as name). Further, the reset/rewrites that are marked as non-standard in the source code must be changed to assign/reset (or rewrite) pairs. (GPC probably only errors on this
1215:
between parallel processes, due to variable updates or channel conflicts. If processes sharing a variable, update it at unpredictable times, the resulting behaviour of the program is time-dependent. Similarly, if two processes simultaneously try to send or receive on a shared channel, the resulting
469:
to detect as many cases as possible in which the language concepts break down and produce meaningless results. SuperPascal imposes restrictions on the use of variables that enable a single-pass compiler to check that parallel processes are disjoint, even if the processes use procedures with global
1826:
The SuperPascal software can be accessed freely from the Brinch Hansen Archive. It consists of a compiler and interpreter, which are both written in normal, sequential Pascal (ISO Level 1 standard Pascal). This is supported by the GNU Pascal compiler and newer versions of the
1219:
SuperPascal enforces certain restrictions on the use of variables and communication to minimise or eliminate time-dependent errors. With variables, a simple rule is required: parallel processes can only update disjoint sets of variables. For example, in a
1306:
communication structure with 100 nodes. A master node sends an integer token to the first node, this is then passed along the pipeline and incremented at each step, and finally received by the master node and printed out.
2244:, Christopher Long's modified version of the original SuperPascal implementation; compiles and runs under modern Free Pascal; program execution is faster than Perl 5 or 6, nearly as fast as Python 3 2269: 332:
The requirements of SuperPascal were based on the experience gained by Hansen over three years in developing a set of model parallel programs, which implemented methods for common problems in
514:
Parallel processes communicate by sending typed messages through channels created dynamically. Channels are not variables in themselves, but are identified by a unique value known as the
2234:, Brinch Hansen Archive, a set of his papers and the SuperPascal software which can be downloaded in a compressed file; contains the full language specification and useful documentation. 2262: 2644: 612:, must both be of the same type as the first channel argument. The following example shows the use of these functions in a process that receives a value from the 309:, extending it with features for safe and efficient concurrency. Pascal itself was used heavily as a publication language in the 1970s. It was used to teach 2639: 2255: 470:
variables, eliminating time-dependent errors. Several features in Pascal were ambiguous or insecure and were omitted from SuperPascal, such as labels and
731:
occurs when two parallel processes attempt to communicate through the same channel and the output expression and input variable are of different types.
2634: 2629: 427:
of parallel processes connected by communication channels. These configurations may be defined iteratively or recursively and created dynamically.
2483: 2096: 251: 2170: 2068: 2039: 1232:
variable (which can't be updated) may be used by multiple processes. In some circumstances, when a variable such as an array is the
714: 582:. A mixed type channel is restricted to transmitting only the specified types, in this case boolean and integer values. The channel 374: 108: 46: 39: 2559: 2365: 2310: 2589: 2370: 2295: 2278: 306: 255: 153: 89: 2359: 2325: 752: 747: 483: 267: 263: 61: 2513: 1292: 194: 2583: 2554: 68: 35: 2498: 2523: 1874:
if you enable strict flags), and the C preprocessor commands #include 'xx' must be changed to {$ include 'xx'}.
1288: 493:
statement denotes that the fixed number of statements it contains must be executed in parallel. For example:
75: 2503: 2488: 2410: 310: 140: 136: 456: 386: 368: 357: 57: 503:
statement denotes the parallel execution of a statement by a dynamic number of processes, for example:
2115:(May 1993), "Model programs for computational science: A programming methodology for multicomputers", 1850:
function can be used (which is supported by the GNU Pascal compiler), by declaring a variable of type
724:
occurs when two parallel processes both attempt to send or receive on the same channel simultaneously.
2287: 431: 397: 362: 282: 279: 132: 127: 336:. This experimentation allowed him to make the following conclusions about the future of scientific 1252: 326: 2541: 2508: 2384: 337: 2355: 2320: 2166: 2158: 2133: 2112: 2092: 2084: 2064: 2035: 2009: 318: 286: 259: 165: 2607: 2446: 2405: 1846:
function (line 1786), which is used to obtain the system time. Instead, the Extended Pascal
333: 322: 160: 486:
2, with the added generality of dynamic process arrays and recursive parallel processes.
82: 2426: 2057: 2028: 466: 2623: 2533: 2436: 2390: 2305: 2300: 2247: 763:
statements to create parallel recursive processes. The following example shows how a
302: 150: 2518: 2441: 2431: 1236:
of multiple parallel processes, and the programmer knows its element-wise usage is
1302:
The following is an example of a complete SuperPascal program, which constructs a
408:
These then led to the following requirements for a parallel publication language:
2461: 352:
process configurations. This was based on his experience programming networks of
2451: 2380: 1828: 225: 220: 24: 2493: 2456: 2395: 2186: 353: 434:
to check that parallel processes do not interfere in a time-dependent manner.
2375: 401: 2237: 737:
occurs when a send or receive operation waits indefinitely for completion.
404:
works, it can easily be implemented in a parallel implementation language.
2601: 2595: 2577: 2340: 314: 1255:
language, with the same basic syntax as Pascal. A program consists of a
2400: 2315: 1835:
switch, with the following respective small modifications to the code.
1240:, then the disjointness restriction may be overridden with a preceding 2241: 2014:
SuperPascal: a publication language for parallel scientific computing
317:
and programming languages. Hansen had earlier developed the language
2571: 420:. The extensions should be in the spirit of the standard language. 1228:
variable cannot be updated by more than a single process, but an
710:
send(channel, e1, e2,..., en); receive(channel, v1, v2,..., vn)
707:
can both take multiple input and output arguments respectively:
412:
The language should extend a widely used standard language with
2251: 604:
statements. The expression or variable providing the value for
2475: 18: 321:, one of the earliest concurrent languages for the design of 2205: 443:
The key ideas in the design of SuperPascal was to provide a
2229: 236: 522:. A channel is declared, for example, by the declaration 982:
Another example is the recursive definition of a process
1880:{ Time code for readtime in Freepascal on unix systems } 1199:
The most difficult aspect of concurrent programming is
381:
Regular problems in computational science require only
392:
Parallel scientific algorithms can be developed in an
313:
practices and featured in text books, for example, on
482:
The parallel features of SuperPascal are a subset of
447:
programming, with abstract concepts for parallelism.
385:, that is, expecting communication from a particular 2532: 2474: 2419: 2348: 2339: 2286: 245: 231: 219: 193: 171: 159: 146: 126: 2056: 2027: 2189:(1974). "Hints on programming language design". 2136:(1994). "The programming language SuperPascal". 1275:procedure. Functions and procedures consists of 767:of processes can be recursively defined using a 596:Message communication is then achieved with the 423:The language should make it possible to program 474:statements, pointers and forward declarations. 2063:. Upper Saddle River, NJ, USA: Prentice-Hall. 2034:. Upper Saddle River, NJ, USA: Prentice-Hall. 2263: 8: 2153: 2151: 2128: 2126: 2004: 2002: 1287:by semicolons, as opposed to languages like 1211:errors. Time-dependent errors are caused by 506:forall i := 0 to 10 do something() 348:, allowing programmers to think in terms of 121: 1854:, setting that with the current time using 2345: 2270: 2256: 2248: 465:in that it should enable its compiler and 120: 109:Learn how and when to remove this message 2163:The invention of concurrent programming 2089:The Architecture of Concurrent Programs 1998: 574:which defines a new (mixed) type named 496:parallel source() | sink() end 45:Please improve this article by adding 2645:Programming languages created in 1993 7: 2117:Concurrency: Practice and Experience 400:computer. When it is established an 2059:Principles of Programming Languages 2640:Pascal programming language family 578:and a variable of this type named 344:Future parallel computers will be 252:Communicating sequential processes 14: 2138:Software: Practice and Experience 1801:'The resulting value is ' 2635:Procedural programming languages 2630:Concurrent programming languages 755:procedures can be combined with 717:communication errors can occur: 23: 2560:Comparison of Pascal and Delphi 1958:{ A nonstandard function reads 616:channel and outputs it on the 1: 2165:. New York: Springer-Verlag. 2030:Structured System Programming 430:The language should enable a 356:, which were general-purpose 47:secondary or tertiary sources 1279:, where a block is a set of 748:Recursion (computer science) 394:elegant publication language 2279:Pascal programming language 2206:"Per Brinch Hansen Archive" 2204:Hayden, C.C. (2008-06-11). 2191:Computer System Reliability 1831:compiler (2.7.1+) with the 1261:global variable definitions 389:, rather than from several. 202:; 31 years ago 177:; 31 years ago 2661: 2555:Comparison of Pascal and C 1961:the processor time in ms } 1216:effect is time-dependent. 745: 602:receive(channel, variable) 510:Channels and communication 454: 2550: 414:deterministic parallelism 383:deterministic parallelism 250: 215: 189: 2524:Visual Component Library 1877: 1309: 988: 773: 622: 524: 425:arbitrary configurations 360:able to be connected in 301:SuperPascal is based on 2055:Tennent, R. D. (1981). 1922:'FPC_SYSC_TIME' 305:'s sequential language 297:History and development 289:. It was designed as a 2504:Object Windows Library 1842:uses the non-standard 608:, and the variable in 586:is initialised by the 311:structured programming 34:relies excessively on 746:Further information: 457:Defensive programming 455:Further information: 418:message communication 1247:Structure and syntax 1207:behaviour caused by 1195:Interference control 598:send(channel, value) 518:, which are held by 432:single-pass compiler 291:publication language 283:programming language 280:concurrent computing 16:Programming language 2026:Welsh, Jim (1980). 172:First appeared 123: 2542:Pascal MicroEngine 2119:, pp. 407–423 2010:Hansen, Per Brinch 1858:and assigning the 1838:For GPC, the file 1271:definitions and a 742:Parallel recursion 729:message type error 722:Channel contention 338:parallel computing 278:is an imperative, 2617: 2616: 2470: 2469: 2321:Concurrent Pascal 2091:. Prentice-Hall. 1295:, where they are 1283:. Statements are 1251:SuperPascal is a 520:channel variables 516:channel reference 329:control systems. 323:operating systems 319:Concurrent Pascal 287:Per Brinch Hansen 273: 272: 260:Concurrent Pascal 221:Typing discipline 166:Per Brinch Hansen 119: 118: 111: 93: 2652: 2608:Component Pascal 2568: 2447:Microsoft Pascal 2406:Pic Micro Pascal 2346: 2272: 2265: 2258: 2249: 2233: 2232: 2230:Official website 2216: 2215: 2213: 2212: 2201: 2195: 2194: 2183: 2177: 2176: 2155: 2146: 2145: 2130: 2121: 2120: 2109: 2103: 2102: 2081: 2075: 2074: 2062: 2052: 2046: 2045: 2033: 2023: 2017: 2016: 2006: 1989: 1986: 1983: 1980: 1977: 1974: 1971: 1968: 1965: 1962: 1959: 1956: 1953: 1950: 1947: 1944: 1941: 1938: 1935: 1932: 1929: 1926: 1923: 1920: 1917: 1914: 1911: 1908: 1905: 1902: 1899: 1896: 1893: 1890: 1887: 1884: 1881: 1869: 1866:to the variable 1865: 1861: 1857: 1853: 1849: 1845: 1841: 1834: 1817: 1814: 1811: 1808: 1805: 1802: 1799: 1796: 1793: 1790: 1787: 1784: 1781: 1778: 1775: 1772: 1769: 1766: 1763: 1760: 1757: 1754: 1751: 1748: 1745: 1742: 1739: 1736: 1733: 1730: 1727: 1724: 1721: 1718: 1715: 1712: 1709: 1706: 1703: 1700: 1697: 1694: 1691: 1688: 1685: 1682: 1679: 1676: 1673: 1670: 1667: 1664: 1661: 1658: 1655: 1652: 1649: 1646: 1643: 1640: 1637: 1634: 1631: 1628: 1625: 1622: 1619: 1616: 1613: 1610: 1607: 1604: 1601: 1598: 1595: 1592: 1589: 1586: 1583: 1580: 1577: 1574: 1571: 1568: 1565: 1562: 1559: 1556: 1553: 1550: 1547: 1544: 1541: 1538: 1535: 1532: 1529: 1526: 1523: 1520: 1517: 1514: 1511: 1508: 1505: 1502: 1499: 1496: 1493: 1490: 1487: 1484: 1481: 1478: 1475: 1472: 1469: 1466: 1463: 1460: 1457: 1454: 1451: 1448: 1445: 1442: 1439: 1436: 1433: 1430: 1427: 1424: 1421: 1418: 1415: 1412: 1409: 1406: 1403: 1400: 1397: 1394: 1391: 1388: 1385: 1382: 1379: 1376: 1373: 1370: 1367: 1364: 1361: 1358: 1355: 1352: 1349: 1346: 1343: 1340: 1337: 1334: 1331: 1328: 1325: 1322: 1319: 1316: 1313: 1253:block structured 1242: 1223: 1205:non-reproducible 1190: 1187: 1184: 1181: 1178: 1175: 1172: 1169: 1166: 1163: 1160: 1157: 1154: 1151: 1148: 1145: 1142: 1139: 1136: 1133: 1130: 1127: 1124: 1121: 1118: 1115: 1112: 1109: 1106: 1103: 1100: 1097: 1094: 1091: 1088: 1085: 1082: 1079: 1076: 1073: 1070: 1067: 1064: 1061: 1058: 1055: 1052: 1049: 1046: 1043: 1040: 1037: 1034: 1031: 1028: 1025: 1022: 1019: 1016: 1013: 1010: 1007: 1004: 1001: 998: 995: 992: 978: 975: 972: 969: 966: 963: 960: 957: 954: 951: 948: 945: 942: 939: 936: 933: 930: 927: 924: 921: 918: 915: 912: 909: 906: 903: 900: 897: 894: 891: 888: 885: 882: 879: 876: 873: 870: 867: 864: 861: 858: 855: 852: 849: 846: 843: 840: 837: 834: 831: 828: 825: 822: 819: 816: 813: 810: 807: 804: 801: 798: 795: 792: 789: 786: 783: 780: 777: 770: 762: 758: 706: 702: 695: 692: 689: 686: 683: 680: 677: 674: 671: 668: 665: 662: 659: 656: 653: 650: 647: 644: 641: 638: 635: 632: 629: 626: 611: 607: 603: 599: 589: 570: 567: 564: 561: 558: 555: 552: 549: 546: 543: 540: 537: 534: 531: 528: 502: 492: 473: 396:and tested on a 350:problem-oriented 334:computer science 241: 238: 210: 208: 203: 185: 183: 178: 161:Designed by 124: 114: 107: 103: 100: 94: 92: 51: 27: 19: 2660: 2659: 2655: 2654: 2653: 2651: 2650: 2649: 2620: 2619: 2618: 2613: 2566: 2546: 2528: 2466: 2415: 2335: 2282: 2276: 2228: 2227: 2224: 2219: 2210: 2208: 2203: 2202: 2198: 2187:Hoare, C. A. R. 2185: 2184: 2180: 2173: 2157: 2156: 2149: 2132: 2131: 2124: 2111: 2110: 2106: 2099: 2083: 2082: 2078: 2071: 2054: 2053: 2049: 2042: 2025: 2024: 2020: 2008: 2007: 2000: 1996: 1991: 1990: 1987: 1984: 1981: 1978: 1975: 1972: 1969: 1966: 1963: 1960: 1957: 1954: 1951: 1948: 1945: 1942: 1939: 1936: 1933: 1930: 1927: 1924: 1921: 1918: 1915: 1912: 1909: 1906: 1903: 1900: 1897: 1894: 1891: 1888: 1885: 1882: 1879: 1875: 1867: 1863: 1859: 1855: 1851: 1847: 1843: 1839: 1832: 1824: 1819: 1818: 1815: 1812: 1809: 1806: 1803: 1800: 1797: 1794: 1791: 1788: 1785: 1782: 1779: 1776: 1773: 1770: 1767: 1764: 1761: 1758: 1755: 1752: 1749: 1746: 1743: 1740: 1737: 1734: 1731: 1728: 1725: 1722: 1719: 1716: 1713: 1710: 1707: 1704: 1701: 1698: 1695: 1692: 1689: 1686: 1683: 1680: 1677: 1674: 1671: 1668: 1665: 1662: 1659: 1656: 1653: 1650: 1647: 1644: 1641: 1638: 1635: 1632: 1629: 1626: 1623: 1620: 1617: 1614: 1611: 1608: 1605: 1602: 1599: 1596: 1593: 1590: 1587: 1584: 1581: 1578: 1575: 1572: 1569: 1566: 1563: 1560: 1557: 1554: 1551: 1548: 1545: 1542: 1539: 1536: 1533: 1530: 1527: 1524: 1521: 1518: 1515: 1512: 1509: 1506: 1503: 1500: 1497: 1494: 1491: 1488: 1485: 1482: 1479: 1476: 1473: 1470: 1467: 1464: 1461: 1458: 1455: 1452: 1449: 1446: 1443: 1440: 1437: 1434: 1431: 1428: 1425: 1422: 1419: 1416: 1413: 1410: 1407: 1404: 1401: 1398: 1395: 1392: 1389: 1386: 1383: 1380: 1377: 1374: 1371: 1368: 1365: 1362: 1359: 1356: 1353: 1350: 1347: 1344: 1341: 1338: 1335: 1332: 1329: 1326: 1323: 1320: 1317: 1314: 1311: 1299:by semicolons. 1249: 1241: 1221: 1197: 1192: 1191: 1188: 1185: 1182: 1179: 1176: 1173: 1170: 1167: 1164: 1161: 1158: 1155: 1152: 1149: 1146: 1143: 1140: 1137: 1134: 1131: 1128: 1125: 1122: 1119: 1116: 1113: 1110: 1107: 1104: 1101: 1098: 1095: 1092: 1089: 1086: 1083: 1080: 1077: 1074: 1071: 1068: 1065: 1062: 1059: 1056: 1053: 1050: 1047: 1044: 1041: 1038: 1035: 1032: 1029: 1026: 1023: 1020: 1017: 1014: 1011: 1008: 1005: 1002: 999: 996: 993: 990: 980: 979: 976: 973: 970: 967: 964: 961: 958: 955: 952: 949: 946: 943: 940: 937: 934: 931: 928: 925: 922: 919: 916: 913: 910: 907: 904: 901: 898: 895: 892: 889: 886: 883: 880: 877: 874: 871: 868: 865: 862: 859: 856: 853: 850: 847: 844: 841: 838: 835: 832: 829: 826: 823: 820: 817: 814: 811: 808: 805: 802: 799: 796: 793: 790: 787: 784: 781: 778: 775: 768: 760: 756: 750: 744: 711: 704: 700: 697: 696: 693: 690: 687: 684: 681: 678: 675: 672: 669: 666: 663: 660: 657: 654: 651: 648: 645: 642: 639: 636: 633: 630: 627: 624: 609: 605: 601: 597: 594: 587: 572: 571: 568: 565: 562: 559: 556: 553: 550: 547: 544: 541: 538: 535: 532: 529: 526: 512: 507: 500: 497: 490: 480: 471: 461:SuperPascal is 459: 453: 441: 346:general-purpose 299: 235: 211: 206: 204: 201: 181: 179: 176: 115: 104: 98: 95: 52: 50: 44: 40:primary sources 28: 17: 12: 11: 5: 2658: 2656: 2648: 2647: 2642: 2637: 2632: 2622: 2621: 2615: 2614: 2612: 2611: 2605: 2599: 2593: 2587: 2581: 2575: 2569: 2563: 2562: 2557: 2551: 2548: 2547: 2545: 2544: 2538: 2536: 2530: 2529: 2527: 2526: 2521: 2516: 2511: 2506: 2501: 2496: 2491: 2486: 2480: 2478: 2472: 2471: 2468: 2467: 2465: 2464: 2459: 2454: 2449: 2444: 2439: 2434: 2429: 2427:Virtual Pascal 2423: 2421: 2417: 2416: 2414: 2413: 2408: 2403: 2398: 2393: 2388: 2378: 2373: 2368: 2363: 2352: 2350: 2343: 2337: 2336: 2334: 2333: 2328: 2323: 2318: 2313: 2308: 2303: 2298: 2292: 2290: 2284: 2283: 2277: 2275: 2274: 2267: 2260: 2252: 2246: 2245: 2235: 2223: 2222:External links 2220: 2218: 2217: 2196: 2178: 2171: 2159:Hansen, Brinch 2147: 2134:Hansen, Brinch 2122: 2113:Hansen, Brinch 2104: 2098:978-0130446282 2097: 2085:Hansen, Brinch 2076: 2069: 2047: 2040: 2018: 1997: 1995: 1992: 1878: 1823: 1822:Implementation 1820: 1310: 1248: 1245: 1209:time-dependent 1196: 1193: 989: 774: 743: 740: 739: 738: 732: 725: 713:The following 709: 699:The functions 623: 592: 525: 511: 508: 505: 495: 479: 476: 467:runtime system 452: 449: 440: 437: 436: 435: 428: 421: 406: 405: 390: 379: 298: 295: 271: 270: 248: 247: 243: 242: 233: 229: 228: 223: 217: 216: 213: 212: 199: 197: 195:Stable release 191: 190: 187: 186: 173: 169: 168: 163: 157: 156: 148: 144: 143: 130: 117: 116: 31: 29: 22: 15: 13: 10: 9: 6: 4: 3: 2: 2657: 2646: 2643: 2641: 2638: 2636: 2633: 2631: 2628: 2627: 2625: 2609: 2606: 2603: 2600: 2597: 2594: 2591: 2588: 2585: 2582: 2579: 2576: 2573: 2570: 2565: 2564: 2561: 2558: 2556: 2553: 2552: 2549: 2543: 2540: 2539: 2537: 2535: 2534:Microcomputer 2531: 2525: 2522: 2520: 2517: 2515: 2512: 2510: 2507: 2505: 2502: 2500: 2497: 2495: 2492: 2490: 2487: 2485: 2482: 2481: 2479: 2477: 2473: 2463: 2460: 2458: 2455: 2453: 2450: 2448: 2445: 2443: 2440: 2438: 2437:Borland Kylix 2435: 2433: 2430: 2428: 2425: 2424: 2422: 2418: 2412: 2409: 2407: 2404: 2402: 2399: 2397: 2394: 2392: 2391:PascalABC.NET 2389: 2386: 2382: 2379: 2377: 2374: 2372: 2369: 2367: 2364: 2361: 2357: 2354: 2353: 2351: 2347: 2344: 2342: 2338: 2332: 2329: 2327: 2324: 2322: 2319: 2317: 2314: 2312: 2309: 2307: 2306:Pascal Script 2304: 2302: 2301:Object Pascal 2299: 2297: 2294: 2293: 2291: 2289: 2285: 2280: 2273: 2268: 2266: 2261: 2259: 2254: 2253: 2250: 2243: 2239: 2236: 2231: 2226: 2225: 2221: 2207: 2200: 2197: 2192: 2188: 2182: 2179: 2174: 2172:0-387-95401-5 2168: 2164: 2160: 2154: 2152: 2148: 2143: 2139: 2135: 2129: 2127: 2123: 2118: 2114: 2108: 2105: 2100: 2094: 2090: 2086: 2080: 2077: 2072: 2070:0-13-709873-1 2066: 2061: 2060: 2051: 2048: 2043: 2041:0-13-854562-6 2037: 2032: 2031: 2022: 2019: 2015: 2011: 2005: 2003: 1999: 1993: 1876: 1871: 1862:field of the 1836: 1830: 1821: 1308: 1305: 1300: 1298: 1294: 1290: 1286: 1282: 1278: 1274: 1270: 1266: 1262: 1258: 1254: 1246: 1244: 1239: 1235: 1231: 1227: 1217: 1214: 1210: 1206: 1202: 1201:unpredictable 1194: 987: 985: 772: 766: 754: 749: 741: 736: 733: 730: 726: 723: 720: 719: 718: 716: 708: 621: 619: 615: 591: 585: 581: 577: 523: 521: 517: 509: 504: 494: 487: 485: 477: 475: 468: 464: 458: 450: 448: 446: 438: 433: 429: 426: 422: 419: 415: 411: 410: 409: 403: 399: 395: 391: 388: 384: 380: 377: 376: 371: 370: 365: 364: 359: 355: 351: 347: 343: 342: 341: 339: 335: 330: 328: 324: 320: 316: 312: 308: 304: 303:Niklaus Wirth 296: 294: 292: 288: 285:developed by 284: 281: 277: 269: 265: 261: 257: 253: 249: 246:Influenced by 244: 240: 237:brinch-hansen 234: 230: 227: 224: 222: 218: 214: 198: 196: 192: 188: 174: 170: 167: 164: 162: 158: 155: 152: 149: 145: 142: 138: 134: 131: 129: 125: 113: 110: 102: 91: 88: 84: 81: 77: 74: 70: 67: 63: 60: –  59: 58:"SuperPascal" 55: 54:Find sources: 48: 42: 41: 37: 32:This article 30: 26: 21: 20: 2519:Turbo Vision 2442:Turbo Pascal 2432:Apple Pascal 2420:Discontinued 2330: 2209:. Retrieved 2199: 2190: 2181: 2162: 2141: 2137: 2116: 2107: 2088: 2079: 2058: 2050: 2029: 2021: 2013: 1872: 1856:getTimeStamp 1848:getTimeStamp 1837: 1825: 1303: 1301: 1296: 1284: 1280: 1276: 1272: 1268: 1264: 1260: 1256: 1250: 1237: 1233: 1229: 1225: 1224:statement a 1218: 1213:interference 1212: 1208: 1204: 1200: 1198: 983: 981: 764: 751: 734: 728: 721: 712: 698: 617: 613: 595: 583: 579: 575: 573: 519: 515: 513: 498: 488: 481: 462: 460: 444: 442: 424: 417: 413: 407: 393: 382: 373: 367: 361: 349: 345: 331: 300: 290: 275: 274: 105: 96: 86: 79: 72: 65: 53: 33: 2452:UCSD Pascal 2381:Free Pascal 2331:SuperPascal 2238:superpascal 1840:interpret.p 1829:Free Pascal 1243:statement. 771:statement. 590:statement: 478:Parallelism 354:transputers 276:SuperPascal 200:1 / 1993 122:SuperPascal 2624:Categories 2567:Related to 2494:FireMonkey 2462:Pascal/MT+ 2457:JRT Pascal 2396:GNU Pascal 2371:VSI Pascal 2211:2020-03-03 2193:: 505–534. 2144:: 399–406. 1994:References 1297:terminated 1281:statements 1230:expression 398:sequential 375:hypercubes 358:processors 141:structured 137:imperative 133:concurrent 69:newspapers 36:references 2376:IP Pascal 2341:Compilers 1928:procedure 1864:TimeStamp 1852:TimeStamp 1504:procedure 1393:procedure 1285:separated 1269:procedure 991:procedure 776:procedure 753:Recursive 402:algorithm 327:real-time 315:compilers 99:June 2018 2602:Oberon-2 2596:Modula-3 2578:Modula-2 2509:OpenWire 2288:Dialects 2161:(1977). 2087:(1977). 2012:(1993), 1931:readtime 1916:external 1883:Function 1726:parallel 1315:pipeline 1304:pipeline 1265:function 1238:disjoint 1222:parallel 1090:parallel 905:pipeline 875:parallel 779:pipeline 769:parallel 765:pipeline 757:parallel 735:Deadlock 593:open(c) 491:parallel 451:Security 439:Features 128:Paradigm 2401:Turbo51 2385:Lazarus 2366:Oxygene 2360:history 2349:Current 2316:Clascal 2311:Oxygene 1946:integer 1910:integer 1901:integer 1795:writeln 1771:receive 1576:integer 1549:channel 1525:channel 1453:receive 1444:integer 1426:channel 1408:integer 1387:integer 1375:channel 1351:integer 1339:channel 1312:program 1042:channel 1018:channel 1006:integer 833:channel 815:channel 797:integer 715:runtime 705:receive 658:receive 640:channel 610:receive 576:channel 566:channel 548:integer 542:boolean 530:channel 387:channel 232:Website 205: ( 180: ( 83:scholar 2610:(1991) 2604:(1991) 2598:(1988) 2592:(1986) 2590:Oberon 2586:(1983) 2580:(1977) 2574:(1958) 2356:Delphi 2296:Pascal 2281:family 2242:GitHub 2169:  2095:  2067:  2038:  1970:fptime 1886:FpTime 1860:Second 1750:create 1651:forall 1507:create 1277:blocks 1257:header 1234:target 1226:target 1186:bottom 1153:bottom 1012:bottom 929:middle 896:middle 866:middle 827:middle 761:forall 652:number 501:forall 463:secure 445:secure 363:arrays 307:Pascal 256:Pascal 226:Strong 154:Pascal 147:Family 85:  78:  71:  64:  56:  2572:ALGOL 2326:Joyce 2142:24, 5 1955:begin 1844:clock 1833:-Miso 1807:value 1783:value 1777:right 1762:right 1717:right 1702:begin 1603:right 1582:begin 1543:array 1519:right 1486:value 1480:right 1465:value 1450:begin 1438:value 1420:right 1381:value 1369:right 1321:const 1165:right 1138:right 1126:depth 1099:depth 1081:right 1066:begin 1054:depth 1048:begin 1036:right 1000:depth 968:right 935:right 857:begin 839:begin 809:right 685:right 634:right 620:one. 618:right 484:occam 369:trees 268:occam 264:Joyce 151:Wirth 90:JSTOR 76:books 2167:ISBN 2093:ISBN 2065:ISBN 2036:ISBN 1919:name 1895:tloc 1756:left 1735:left 1729:send 1711:left 1705:open 1672:node 1636:open 1591:left 1534:type 1513:left 1474:send 1459:left 1414:left 1396:node 1363:left 1336:type 1293:Java 1273:main 1180:leaf 1177:else 1159:left 1147:root 1120:tree 1111:left 1093:tree 1075:left 1069:open 1063:then 1057:> 1030:left 994:tree 984:tree 962:left 950:node 947:else 890:left 878:node 860:open 854:then 848:< 803:left 759:and 703:and 701:send 679:send 664:left 628:left 614:left 606:send 600:and 588:open 527:type 472:goto 416:and 325:and 239:.net 207:1993 182:1993 175:1993 62:news 2584:Ada 2514:RTL 2499:LCL 2489:FCL 2484:CLX 2476:API 2411:ACK 2240:on 1985:end 1937:var 1892:var 1813:end 1789:end 1696:end 1666:len 1624:len 1609:for 1564:row 1555:var 1537:row 1498:end 1435:var 1360:var 1330:100 1324:len 1291:or 1267:or 1203:or 1174:end 1171:end 1027:var 974:end 956:min 944:end 941:end 923:max 911:min 884:min 851:max 845:min 824:var 791:max 785:min 625:var 557:var 372:or 38:to 2626:: 2150:^ 2140:. 2125:^ 2001:^ 1967::= 1870:. 1669:do 1663:to 1657::= 1633:do 1621:to 1615::= 1600::= 1588::= 1546:of 1263:, 1259:, 1051:if 986:: 842:if 727:A 499:A 489:A 366:, 340:: 266:, 262:, 258:, 254:, 139:, 135:, 49:. 2387:) 2383:( 2362:) 2358:( 2271:e 2264:t 2257:v 2214:. 2175:. 2101:. 2073:. 2044:. 1988:; 1982:; 1979:) 1976:t 1973:( 1964:t 1952:; 1949:) 1943:: 1940:t 1934:( 1925:; 1913:; 1907:: 1904:) 1898:: 1889:( 1868:t 1816:. 1810:) 1804:, 1798:( 1792:; 1786:) 1780:, 1774:( 1768:| 1765:) 1759:, 1753:( 1747:| 1744:) 1741:0 1738:, 1732:( 1723:; 1720:) 1714:, 1708:( 1699:; 1693:) 1690:c 1687:, 1684:c 1681:, 1678:i 1675:( 1660:1 1654:i 1648:; 1645:) 1642:c 1639:( 1630:1 1627:- 1618:1 1612:i 1606:; 1597:c 1594:; 1585:c 1579:; 1573:: 1570:i 1567:; 1561:: 1558:c 1552:; 1540:= 1531:; 1528:) 1522:: 1516:, 1510:( 1501:; 1495:) 1492:1 1489:+ 1483:, 1477:( 1471:; 1468:) 1462:, 1456:( 1447:; 1441:: 1432:; 1429:) 1423:: 1417:, 1411:; 1405:: 1402:i 1399:( 1390:; 1384:: 1378:; 1372:: 1366:, 1357:; 1354:) 1348:( 1345:* 1342:= 1333:; 1327:= 1318:; 1289:C 1189:) 1183:( 1168:) 1162:, 1156:, 1150:( 1144:| 1141:) 1135:, 1132:1 1129:- 1123:( 1117:| 1114:) 1108:, 1105:1 1102:- 1096:( 1087:; 1084:) 1078:, 1072:( 1060:0 1045:; 1039:: 1033:, 1024:; 1021:) 1015:: 1009:, 1003:: 997:( 977:; 971:) 965:, 959:, 953:( 938:) 932:, 926:, 920:, 917:1 914:+ 908:( 902:| 899:) 893:, 887:, 881:( 872:; 869:) 863:( 836:; 830:: 821:; 818:) 812:: 806:, 800:; 794:: 788:, 782:( 694:) 691:a 688:, 682:( 676:; 673:) 670:a 667:, 661:( 655:; 649:: 646:a 643:; 637:: 631:, 584:c 580:c 569:; 563:: 560:c 554:; 551:) 545:, 539:( 536:* 533:= 378:. 209:) 184:) 112:) 106:( 101:) 97:( 87:· 80:· 73:· 66:· 43:.

Index


references
primary sources
secondary or tertiary sources
"SuperPascal"
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
Paradigm
concurrent
imperative
structured
Wirth
Pascal
Designed by
Per Brinch Hansen
Stable release
Typing discipline
Strong
brinch-hansen.net
Communicating sequential processes
Pascal
Concurrent Pascal
Joyce
occam
concurrent computing
programming language

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