词条 | PLANC |
释义 |
PLANC (pronounced as "plank") is a high level computer programming language. The acronym stands for Programming LAnguage for Nd Computers. Compilers were developed by Norsk Data for several architectures, including the Motorola 68000, 88000, x86, and the Norsk Data NORD-10 minicomputer architecture and ND-500 superminicomputer. The language was designed to be platform independent. It was mainly used internally at Norsk Data for writing high level systems software such as the upper parts of the operating systems and compilers. PLANC basic structurePLANC programs are structured into modules and routines. A very simple example of a PLANC program is as follows: MODULE mod INTEGER ARRAY : stack (0:100) PROGRAM : mprog INTEGER : i, j,k, m INISTACK stack 1 =: i 2 =: j i+j =: k =: m ENDROUTINE ENDMODULE A difference from popular programming languages is that the assignment operator goes from left to right: First you compute the value, then you store it. Compile-time initialization of variables, on the other hand, went from right to left. The assignment operator returns the stored value, so you could store it multiple times: 5 =: a =: b would store 5 into both the A and B variables. It shares this direction with Plankalkül, ALGOL 60, and Mary, another little known programming language developed in Norway, but also the popular C programming language. A related distinct syntactic feature is that a function can be defined to take as input the computed value of the expression on its left side. Also, a single additional argument does not require surrounding parentheses. The resulting infix notation blurs the syntactical difference between functions and operators. Such expressions seem conceptually as having a computed value flowing from left to the right. PLANC data typesAs with all high level languages PLANC uses variables as can be seen in the previous sample, here are the allowed data types within PLANC:
INTEGER, REAL, BOOLEAN, LABEL, VOID, ENUMERATION, POINTER
ARRAY, RECORD, SET, ROUTINE
An enumeration was declared thus: This defines an enumeration of the seasons and sets the default value to Summer. LABEL is a little different from your normal data type, this is used to pre-define a label within code and is used in conjunction with a GO statement (very much like GOTO in BASIC). Access modifiers can be applied to make them READ or WRITE only. For string data several predefined datatypes are used, they are:
Array pointers were 3-word constructs that included both the base address, the lower bound and the higher bound of the array; this made it possible to do reliable run-time checking of array boundaries, and made the kind of "pointer arithmetic" that makes C such an "interesting" language much less tempting to write. Some PLANC statementsPLANC is a language in the PASCAL family. However, it lacks the generic BEGIN END construct often found in PASCAL and favors instead forms like ROUTINE..ENDROUTINE or DO..ENDDO etc. One feature that sets it apart from some other languages is the construction of loops: DO .... loop statements... ENDDO Hopefully one or more of the loop statements would be WHILE condition that allowed you to break out of the loop. For example: DO WHILE test ..... ENDDO Is similar to a C while (test) { ... } loop. Another example: DO ...... WHILE test Is similar to a C do { .... } while (test). loop. Sometimes programmers wrote: DO WHILE test1 ..... WHILE test2 ENDDO In C you would have to write something like while (test1) { .... if (! test2) break; } or some such. For loops have the following structure: FOR var IN low:high DO .... loop statements.... ENDDO You can also specify a step by low:high:step. Alternatively you can specify a type (enumeration or integer ranged type) to specify a loop over a range of values or a set to loop over all elements of the set or you can specify an array to loop over an array. You can also specify a pointer:next to walk through a list. For example, if defining: TYPE node = RECORD node POINTER : next T : some_data ENDRECORD You could write: FOR p IN first:next DO ..... ENDFOR to loop over the list. A for loop can have WHILE statements inside it. This provides two possible manners of exiting a for loop, either because the list of values are exhausted or because the test failed. Thus, you can write blocks to catch each of those: '''routine''' '''void''',node '''pointer''' (node '''pointer''' : list) '''for''' p '''in''' first:next '''do''' '''while''' p.val >< 20 '''exitfor return nil''' '''endfor''' '''return''' '''endroutine''' This returns nil if you have exhausted the list but if you exited due to while you just ended up after the loop and returned the pointer to the element found. Alternatively you could have placed that in an exitwhile block which is identical except you would end up there if and only if the while test failed. If you have more than one while statement in the loop you could not tell those apart, they would all make a jump to the same exitwhile block. PLANC had a primitive exception mechanism - a routine could return an exception, which was a 16-bit integer value. This could then be caught by an ON ROUTINEERROR statement in the calling scope. See also
References
3 : Procedural programming languages|Programming languages created in the 20th century|Norsk Data software |
随便看 |
|
开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。