Norwegian Computing Center (NR, in Norwegian: Norsk Regnesentral ) is a private, independent, non-profit research foundation. NR carries out contract research and development in the areas of computing and quantitative methods for a broad range of industrial , commercial and public service organizations in Norway and internationally. NR is one of Europe's largest research environments in applied statistics and its projects cover a large variety of applied and academic problems. NR's offices are located near the university campus Blindern in Oslo , and adjacent to Oslo Science Park (Forskningsparken).
42-533: NR was established in 1952. Until 1970 an important part of the activity was to perform mathematical computations for other organizations. NR has worked with data communication since 1963. The Simula programming language was designed and built by Ole-Johan Dahl and Kristen Nygaard and their research group at the Norwegian Computing Center in Oslo between 1962 and 1967. After 1970 NR has been
84-623: A UNIVAC 1107 in August 1963 at a considerable discount, on which Dahl implemented the SIMULA I under contract with UNIVAC. The implementation was based on the UNIVAC ALGOL 60 compiler. SIMULA I was fully operational on the UNIVAC 1107 by January 1965. In the following few years, Dahl and Nygaard spent a lot of time teaching Simula. Simula spread to several countries around the world and SIMULA I
126-461: A simulation package for doing discrete event simulations . This simulation package is based on Simula's object-oriented features and its coroutine concept. Sam, Sally, and Andy are shopping for clothes. They must share one fitting room. Each one of them is browsing the store for about 12 minutes and then uses the fitting room exclusively for about three minutes, each following a normal distribution. A simulation of their fitting room experience
168-720: A format specification as used in FORTRAN, e.g. A simpler program using an inline format: An even simpler program using the Display statement: An alternative example, using Elliott Algol I/O is as follows. Elliott Algol used different characters for "open-string-quote" and "close-string-quote", represented here by ‘ and ’ . Here's a version for the Elliott 803 Algol (A104) The standard Elliott 803 used 5-hole paper tape and thus only had upper case. The code lacked any quote characters so £ (pound sign)
210-447: A key advance in the rise of structured programming . ALGOL 60 was one of the first languages implementing function definitions (that could be invoked recursively). ALGOL 60 function definitions could be nested within one another (which was first introduced by any programming language), with lexical scope . It gave rise to many other languages, including CPL , PL/I , Simula , BCPL , B , Pascal , and C . Practically every computer of
252-517: A methodological research institute. In 1985, NR became an independent institute and moved to its present location in 1988. It has worked with the Internet since 1973, ICT security since 1988, multimedia since 1994, e-Inclusion since 2005. It started working with remote sensing in 1982, geostatistics and petroleum in 1983, marine resources in 1988 and electricity prices and finance in 1994. NR employees Ole-Johan Dahl and Kristen Nygaard received
294-412: A need for a better way to describe the heterogeneity and the operation of a system. To go further with his ideas on a formal computer language for describing a system, Nygaard realized that he needed someone with more computer programming skills than he had. Ole-Johan Dahl joined him on his work January 1962. The decision of linking the language up to ALGOL 60 was made shortly after. By May 1962,
336-477: A random function passed as actual argument. Call-by-name is known by many compiler designers for the interesting " thunks " that are used to implement it. Donald Knuth devised the " man or boy test " to separate compilers that correctly implemented " recursion and non-local references." This test contains an example of call-by-name. There are 35 such reserved words in the standard Burroughs Large Systems sub-language: There are 71 such restricted identifiers in
378-460: A wide range of platforms. The TOPS-10 implemented the concept of public, protected, and private member variables and procedures, that later was integrated into Simula Standard in 1986. Simula Standard 1986 is the latest standard and is ported to a wide range of platforms. There are mainly four implementations: In November 2001, Dahl and Nygaard were awarded the IEEE John von Neumann Medal by
420-492: Is also a significant activity on all kinds of risk quantification, primarily within the energy sector. NR was host to Statistics for Innovation in 2007-2014, and is host to BigInsight for the period 2015-2024. Statistics for Innovation and BigInsight are both Centres for Research-based Innovation and funded by the Research Council of Norway . NR's Master’s Prize is awarded annually to master's theses submitted at
462-427: Is as follows: The main block is prefixed with Simulation for enabling simulation. The simulation package can be used on any block and simulations can even be nested when simulating someone doing simulations. The fitting room object uses a queue ( door ) for getting access to the fitting room. When someone requests the fitting room and it's in use they must wait in this queue ( Wait (door) ). When someone leaves
SECTION 10
#1732787948266504-610: Is considered the first object-oriented programming language . As its name suggests, the first Simula version by 1962 was designed for doing simulations ; Simula 67 though was designed to be a general-purpose programming language and provided the framework for many of the features of object-oriented languages today. Simula has been used in a wide range of applications such as simulating very-large-scale integration (VLSI) designs, process modeling , communication protocols , algorithms , and other applications such as typesetting , computer graphics , and education . The influence of Simula
546-510: Is no portable hello world program in ALGOL. The following program could (and still will) compile and run on an ALGOL implementation for a Unisys A-Series mainframe, and is a straightforward simplification of code taken from The Language Guide at the University of Michigan -Dearborn Computer and Information Science Department Hello world! ALGOL Example Program page. Where * etc. represented
588-489: Is often understated, and Simula-type objects are reimplemented in C++ , Object Pascal , Java , C# , and many other languages. Computer scientists such as Bjarne Stroustrup , creator of C++, and James Gosling , creator of Java, have acknowledged Simula as a major influence. The following account is based on Jan Rune Holmevik's historical essay. Kristen Nygaard started writing computer simulation programs in 1957. Nygaard saw
630-555: Is substantially different from ALGOL 60 and was criticised partially for being so, so that in general "ALGOL" refers to dialects of ALGOL 60. ALGOL 60 – with COBOL – were the first languages to seek standardization. ALGOL 60 was used mostly by research computer scientists in the United States and in Europe. Its use in commercial applications was hindered by the absence of standard input/output facilities in its description and
672-799: Is the name of two simulation programming languages , Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center in Oslo , by Ole-Johan Dahl and Kristen Nygaard . Syntactically , it is an approximate superset of ALGOL 60 , and was also influenced by the design of Simscript . Simula 67 introduced objects , classes , inheritance and subclasses , virtual procedures , coroutines , and discrete event simulation , and featured garbage collection . Other forms of subtyping (besides inheriting subclasses) were introduced in Simula derivatives. Simula
714-526: The Institute of Electrical and Electronics Engineers "For the introduction of the concepts underlying object-oriented programming through the design and implementation of SIMULA 67". In April 2002, they received the 2001 A. M. Turing Award by the Association for Computing Machinery (ACM), with the citation: "For ideas fundamental to the emergence of object oriented programming, through their design of
756-1387: The Turing Award in 2001 and the 2002 IEEE John von Neumann Medal for the introduction of the concepts underlying object-oriented programming through the design and implementation of Simula 67. A book about the history of NR, Norsk Regnesentrals historie 1952 - 2002 was published in 2002. The Department of Applied Research in Information Technology (DART) works with project-oriented applied research within multimedia, information security, information privacy and risks, universal design, and e-inclusion. In addition to research, DART's work covers concept studies, analysis, consultancy, prototyping, training, development, and evaluation. The Department of Statistical Analysis, Image Analysis, and Pattern Recognition (SAMBA) works with project-oriented applied research in all areas of mathematical statistics. The main application areas are Statistics for Climate, Environment, Marine Resources and Health, Statistics for Finance, Insurance and Commodity Markets, Statistics for Technology, Industry and Administration, Earth Observation, and Image Analysis and Pattern Recognition. The Department of Statistical Analysis of Natural Resource Data (SAND) works with project-oriented applied research statistics related to
798-502: The University of Oslo is named Ole Johan Dahl's House, in Dahl's honour, and the main auditorium is named Simula. The empty computer file is the minimal program in Simula, measured by the size of the source code . It consists of one thing only; a dummy statement . However, the minimal program is more conveniently represented as an empty block: It begins executing and immediately terminates. The language lacks any return value from
840-703: The ALGOL Bulletin I was drawn into the international discussions of the language and was selected to be member of the European language design group in November 1959. In this capacity I was the editor of the ALGOL 60 report, produced as the result of the ALGOL 60 meeting in Paris in January 1960." The following people attended the meeting in Paris (from January 11 to 16): Alan Perlis gave a vivid description of
882-636: The Department of Mathematics and the Department of Informatics at the University of Oslo and at the Department of Mathematical Sciences and the Department of Computer Science at the Norwegian University of Science and Technology . The award was first issued in 2009. 59°56′37.19″N 10°43′2.75″E / 59.9436639°N 10.7174306°E / 59.9436639; 10.7174306 Simula programming language Simula
SECTION 20
#1732787948266924-489: The IFIP Working Conference on simulation languages in Oslo , May 1967. This paper became the first formal definition of Simula 67. In June 1967, a conference was held to standardize the language and initiate a number of implementations. Dahl proposed to unify the type and the class concept. This led to serious discussions, and the proposal was rejected by the board. Simula 67 was formally standardized on
966-464: The Jensen's Device must therefore specify call by name for the parameters when compiled by a Simula compiler. Another much simpler example is the summation function ∑ {\displaystyle \sum } which can be implemented as follows: The above code uses call by name for the controlling variable (k) and the expression (u). This allows the controlling variable to be used in
1008-428: The actual parameters that are passed in are an integer variable and an array that is indexed by that same integer variable. Think of passing a pointer to swap(i, A[i]) in to a function. Now that every time swap is referenced, it's reevaluated. Say i := 1 and A[i] := 2, so every time swap is referenced it'll return the other combination of the values ([1,2], [2,1], [1,2] and so on). A similar situation occurs with
1050-770: The committee. ALGOL 60 inspired many languages that followed it. Tony Hoare remarked: "Here is a language so far ahead of its time that it was not only an improvement on its predecessors but also on nearly all its successors." To date there have been at least 70 augmentations, extensions, derivations and sublanguages of ALGOL 60. The Burroughs dialects included special system programming dialects such as ESPOL and NEWP . ALGOL 60 as officially defined had no I/O facilities; implementations defined their own in ways that were rarely compatible with each other. In contrast, ALGOL 68 offered an extensive library of transput (ALGOL 68 parlance for input/output) facilities. ALGOL 60 provided two evaluation strategies for parameter passing:
1092-430: The common call-by-value , and call-by-name . The procedure declaration specified, for each formal parameter, which was to be used: value specified for call-by-value, and omitted for call-by-name. Call-by-name has certain effects in contrast to call-by-reference . For example, without specifying the parameters as value or reference , it is impossible to develop a procedure that will swap the values of two parameters if
1134-535: The concept of abstract classes , since classes with pure virtual procedures can be instantiated . This means that in the above example, all classes can be instantiated. Calling a pure virtual procedure will however produce a run-time error . Simula supports call by name so the Jensen's Device can easily be implemented. However, the default transmission mode for simple parameter is call by value , contrary to ALGOL which used call by name . The source code for
1176-481: The era had a systems programming language based on ALGOL 60 concepts. Niklaus Wirth based his own ALGOL W on ALGOL 60 before moving to develop Pascal . Algol-W was intended to be the next generation ALGOL but the ALGOL 68 committee decided on a design that was more complex and advanced rather than a cleaned simplified ALGOL 60. The official ALGOL versions are named after the year they were first published. ALGOL 68
1218-457: The expression. Note that the Simula standard allows for certain restrictions on the controlling variable in a for loop . The above code therefore uses a while loop for maximum portability. The following: Z = ∑ i = 1 100 1 ( i + a ) 2 {\displaystyle Z=\sum _{i=1}^{100}{1 \over (i+a)^{2}}} can then be implemented as follows: Simula includes
1260-585: The first meeting of the Simula Standards Group (SSG) in February 1968. Simula was influential in the development of Smalltalk and later object-oriented programming languages. It also helped inspire the actor model of concurrent computation although Simula only supports coroutines and not true concurrency . In the late sixties and the early seventies, there were four main implementations of Simula: These implementations were ported to
1302-428: The fitting room the first one (if any) is released from the queue ( Activate door.first ) and accordingly removed from the door queue ( door.First.Out ). Person is a subclass of Process and its activity is described using hold (time for browsing the store and time spent in the fitting room) and calls procedures in the fitting room object for requesting and leaving the fitting room. The main program creates all
Norwegian Computing Center - Misplaced Pages Continue
1344-519: The lack of interest in the language by large computer vendors. ALGOL 60 did however become the standard for the publication of algorithms and had a profound effect on future language development. John Backus developed the Backus normal form method of describing programming languages specifically for ALGOL 58. It was revised and expanded by Peter Naur for ALGOL 60, and at Donald Knuth 's suggestion renamed Backus–Naur form . Peter Naur: "As editor of
1386-525: The main concepts for a simulation language were set. SIMULA I was born, a special purpose programming language for simulating discrete event systems. Kristen Nygaard was invited to visit the Eckert–Mauchly Computer Corporation late May 1962 in connection with the marketing of their new UNIVAC 1107 computer. At that visit, Nygaard presented the ideas of Simula to Robert Bemer , the director of systems programming at Univac . Bemer
1428-413: The meeting: "The meetings were exhausting, interminable, and exhilarating. One became aggravated when one's good ideas were discarded along with the bad ones of others. Nevertheless, diligence persisted during the entire period. The chemistry of the 13 was excellent." The language originally did not include recursion . It was inserted into the specification at the last minute, against the wishes of some of
1470-448: The objects and activates all the person objects to put them into the event queue. The main program holds for 100 minutes of simulated time before the program terminates. ALGOL 60 ALGOL 60 (short for Algorithmic Language 1960 ) is a member of the ALGOL family of computer programming languages . It followed on from ALGOL 58 which had introduced code blocks and the begin and end pairs for delimiting them, representing
1512-413: The petroleum industry. The group is a significant international contributor to research and services within reservoir description, stochastic modeling and geostatistics for the petroleum industry. The primary goal is to use statistical methods to reduce and quantify risk and uncertainty. The main area is stochastic modeling of the geology in petroleum reservoirs including upscaling and history matching. There
1554-471: The program. An example of a Hello world program in Simula: Simula is case-insensitive . A more realistic example with use of classes, subclasses and virtual procedures: The above example has one super class (Glyph) with two subclasses ( Char and Line ). There is one virtual procedure with two implementations . The execution starts by executing the main program. Simula lacks
1596-626: The programming languages Simula I and Simula 67." Dahl and Nygaard died in June and August of that year, respectively, before the ACM Turing Award Lecture that was scheduled to be delivered at the November 2002 OOPSLA conference in Seattle. Simula Research Laboratory is a research institute named after the Simula language, and Nygaard held a part-time position there from the opening in 2001. The new Computer Science building at
1638-461: The standard Burroughs Large Systems sub-language: and also the names of all the intrinsic functions. Implementations differ in how the text in bold must be written. The word 'INTEGER', including the quotation marks, must be used in some implementations in place of integer , above, thereby designating it as a special keyword. Following is an example of how to produce a table using Elliott 803 ALGOL: Since ALGOL 60 had no I/O facilities, there
1680-466: Was a great ALGOL fan and found the Simula project compelling. Bemer was also chairperson of a session at the second international conference on information processing hosted by International Federation for Information Processing (IFIP). He invited Nygaard, who presented the paper "SIMULA – An Extension of ALGOL to the Description of Discrete-Event Networks". The Norwegian Computing Center got
1722-529: Was later implemented on other computers including the Burroughs B5500 and the Russian Ural-16 . In 1966 C. A. R. Hoare introduced the concept of record class construct, which Dahl and Nygaard extended with the concept of prefixing and other features to meet their requirements for a generalized process concept. Dahl and Nygaard presented their paper on Class and Subclass declarations at
Norwegian Computing Center - Misplaced Pages Continue
1764-489: Was used for open quote and ? (question mark) for close quote. Special sequences were placed in double quotes (e.g., £L?? produced a new line on the teleprinter). The ICT 1900 series Algol I/O version allowed input from paper tape or punched card. Paper tape 'full' mode allowed lower case. Output was to a line printer. Note use of '(', ')', and %. LEAP is an extension to the ALGOL 60 programming language which provides an associative memory of triples. The three items in
#265734