wolfram report

17
1 1. INTRODUCTION Designed for the new generation of programmers, the Wolfram Language has a vast depth of  built-in algorithms and knowledge, all automatically accessible through its elegant unified symbolic language. Scalable for programs from tiny to huge, with immediate deployment locally and in the cloud, the Wolfram Language builds on clear principles   and 25+ years of development   to create what promises to be the world's most productive programming language.  From its earliest stages, the Wolfram Language was conceived as a general language for computation    based on foundationa l ideas about symbolic systems. The concepts of the Wolfram Language were first applied to the highly demanding area of mathematical computation in  Mathematica   with outstanding success over the course of more than 25 years. In its precursors in  Mathematica, the Wolfram Language has had millions of users for 25+ years   including many of the world's top research ers, and countless students and others. Wolfram|Alpha made vast real-world knowledge computable   so it could be integrated into the Wolfram Language to make the language talk not just about formal constructs, but also about the real world. The Wolfram Language is clean enough to have been able to maintain compatibility all the way back to its earliest origins in Mathematica 1.0 from 1988. From its earliest origins, the Wolfram Language was built to follow principles, without compromising for the hardware limitations of the day (everything symbolic, infinite  precision, etc.). Data structures, code fragments, graphics, documents, interfaces... Over the 25 years it was being incubated, the Wolfram Language discovered more and more ways to apply symbolic programming. Billions of lines of what's now Wolfram Language code are inside software systems around the world   with tens of millions inside Wolfram|Alpha and the Wolfram Language itself. The Wolfram Language has originated many new programming ideas   some of which have influenced languages developed over the past 25 years, but many of which remain only in the Wolfram Language.

Upload: kshitij-gupta

Post on 02-Jun-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Wolfram Report

8/10/2019 Wolfram Report

http://slidepdf.com/reader/full/wolfram-report 1/17

1

1. INTRODUCTION

Designed for the new generation of programmers, the Wolfram Language has a vast depth of built-in algorithms and knowledge, all automatically accessible through its elegant unified

symbolic language. Scalable for programs from tiny to huge, with immediate deployment

locally and in the cloud, the Wolfram Language builds on clear principles — and 25+ years of

development — to create what promises to be the world's most productive programming

language. 

From its earliest stages, the Wolfram Language was conceived as a general language for

computation —  based on foundational ideas about symbolic systems. The concepts of the

Wolfram Language were first applied to the highly demanding area of mathematical

computation in  Mathematica — with outstanding success over the course of more than 25

years. In its precursors in Mathematica, the Wolfram Language has had millions of users for

25+ years — including many of the world's top researchers, and countless students and others.

Wolfram|Alpha made vast real-world knowledge computable — so it could be integrated into

the Wolfram Language to make the language talk not just about formal constructs, but also

about the real world. The Wolfram Language is clean enough to have been able to maintain

compatibility all the way back to its earliest origins in Mathematica 1.0 from 1988.

From its earliest origins, the Wolfram Language was built to follow principles, without

compromising for the hardware limitations of the day (everything symbolic, infinite precision, etc.). Data structures, code fragments, graphics, documents, interfaces... Over the

25 years it was being incubated, the Wolfram Language discovered more and more ways to

apply symbolic programming. Billions of lines of what's now Wolfram Language code are

inside software systems around the world — with tens of millions inside Wolfram|Alpha and

the Wolfram Language itself.

The Wolfram Language has originated many new programming ideas — some of which have

influenced languages developed over the past 25 years, but many of which remain only in the

Wolfram Language.

Page 2: Wolfram Report

8/10/2019 Wolfram Report

http://slidepdf.com/reader/full/wolfram-report 2/17

2

2. MOTIVATION 

Computational knowledge. Symbolic programming. Algorithm automation. Dynamic

interactivity. Natural language. Computable documents. The cloud. Connected devices. Symbolic

ontology. Algorithm discovery. These are all things people have been energetically working on

separately, nobody figured out how to take all these threads, and all the technology we’ve built, to

create something at a whole different level.

With the aim creating a vast unified web of technology that builds on what we‘ve created

over the past quarter century, an intellectual structure that actualizes a new computationalview of the world the Wolfram Language was born. At some level it‘s a practical system and

framework that‘s going to be a fount of incredibly useful new services and products.

We call it the Wolfram Language because it is a language. But it‘s a new and different kindof language. It‘s a general-purpose knowledge-based language. That covers all forms ofcomputing, in a new way.

There are plenty of existing general-purpose computer languages. But their vision is verydifferent — and in a sense much more modest — than the Wolfram Language. They concentrateon managing the structure of programs, keeping the language itself small in scope, andrelying on a web of external libraries for additional functionality. In the Wolfram Languagemy concept from the very beginning has been to create a single tightly integrated system inwhich as much as possible is included right in the language itself.

And so in the Wolfram Language, built right into the language, are capabilities for laying outgraphs or doing image processing or creating user interfaces or whatever. Inside there‘s a

giant web of algorithms —  by far the largest ever assembled, and many invented by us. Andthere are then thousands of carefully designed functions set up to use these algorithms to

 perform operations as automatically as possible.

Also integrated right into the language all the knowledge and data and algorithms that are built into Wolfram|Alpha. So in a sense inside the Wolfram Language we have a wholecomputable model of the world. And it becomes trivial to write a program that makes use ofthe latest stock price, computes the next high tide, generates a street map, shows an image of

a type of airplane, or a zillion other things.

We also get the free-form natural language of Wolfram|Alpha. So when we want to specify adate, or a place, or a song, we can do it just using natural language. And we can even start to

 build up programs with nothing more than natural language.

Page 3: Wolfram Report

8/10/2019 Wolfram Report

http://slidepdf.com/reader/full/wolfram-report 3/17

3

3. BACKGROUND WORKS

In a first approximation, the Wolfram Language = Mathematica + Wolfram|Alpha + Cloud +more 

3.1. Mathematica :

Features of Mathematica include:

  Automatic translation of English sentences into Mathematica code

  Elementary mathematical function library

 

Special mathematical function library

 

Matrix and data manipulation tools including support for  sparse arrays

  Support for  complex number, arbitrary precision, interval arithmetic and symbolic

computation

  2D and 3D data and function visualization and animation tools

   Numeric and symbolic tools for discrete and continuous calculus

  Multivariate statistics libraries including fitting, hypothesis testing, and probability and

expectation calculations on over 140 distributions.

  Support for censored data temporal data and unit based data

  Calculations and simulations on random processes and queues

  Constrained and unconstrained local and global optimization

  Programming language supporting procedural, functional and object oriented constructs

  Toolkit for adding user interfaces to calculations and applications

  Tools for 2D and 3D image processing and morphological image

 processing including image recognition

  Tools for visualizing and analysing graphs

  Tools for combinatoric problems

  Tools for  text mining including regular expressions and semantic analysis

  Data mining tools such as cluster analysis, sequence alignment and pattern matching

 

 Number theory function library

  Tools for financial calculations including bonds, annuities, derivatives, options etc.

  Group theory and symbolic tensor functions

  Libraries for signal processing including wavelet analysis on sounds, images and data

  Control systems libraries

  Continuous and discrete integral transforms

  Import and export filters for data, images, video, sound, CAD, GIS, document and

 biomedical formats

 

Database collection for mathematical, scientific, and socio-economic information andaccess to Wolfram|Alpha data and computations.

Page 4: Wolfram Report

8/10/2019 Wolfram Report

http://slidepdf.com/reader/full/wolfram-report 4/17

4

3.2. Wolfram|Alpha

Wolfram Alpha (also styled WolframAlpha and Wolfram|Alpha) is a computational

knowledge engine[4] or  answer engine developed by Wolfram Research. It is an online service

that answers factual queries directly by computing the answer from externally sourced

"curated data", rather than providing a list of documents or web pages that might contain the

answer as a search engine might. 

Users submit queries and computation requests via a text field. Wolfram Alpha then

computes answers and relevant visualizations from a knowledge base of  curated, structured

data that come from other sites. The curated data makes Alpha different from semantic

search engines, which index a large number of answers and then try to match the question to

one.

Using the Mathematica toolkit, Wolfram Alpha can respond to natural language

questions and generate a human-readable answer. Founder  Stephen Wolfram has said of the

engine:

"All one needs to be able to do is to take questions people ask in natural language, and

represent them in a precise form that fits into the computations one can do,"[9] 

Wolfram Alpha can only provide robust query results based on computational facts, not

queries on the social sciences, cultural studies or even many questions about history where

responses require more subtlety and complexity. It is able to respond to particularly-phrased

natural-language fact-based questions such as "Where was Mary Robinson  born?" or more

complex questions such as "How old was Queen Elizabeth II in 1974?" It displays its "Inputinterpretation" of such a question, using standardized phrases such as "age | of Queen

Elizabeth II (royalty) | in 1974", the answer of which is "Age at start of 1974: 47 years", and

a biography link. Wolfram Alpha does not answer queries which require a narrative response

such as "What is the difference between the Julian and the Gregorian calendars?" but will

answer factual or computational questions such as "June 1 in Julian calendar".

Mathematical symbolism can be parsed by the engine, which typically responds with more

than the numerical results. For example, "lim(x->0) (sin x)/x" yields the correct limiting

value of 1, as well as a plot, up to 235 terms (as of 2013) of the Taylor series, and (for

registered users) a possible derivation using L'Hôpital's rule. It is also able to perform

calculations on data using more than one source. For example, "What is the fifty-second

smallest country by GDP per capita?" yields Nicaragua, $1160 per year. 

Page 5: Wolfram Report

8/10/2019 Wolfram Report

http://slidepdf.com/reader/full/wolfram-report 5/17

5

Fig. 1 Processing of a Natural Language Query by Wolfram|Alpha

Page 6: Wolfram Report

8/10/2019 Wolfram Report

http://slidepdf.com/reader/full/wolfram-report 6/17

6

4. PRINCIPLES AND CONCEPTS 

1.  Knowledge Based Programming 

Unlike other languages, the philosophy of the wolfram language is to build as much

knowledge — about algorithms and about the world — into the language as possible.

2. Meta Algorithms and SuperfunctionsThe philosophy is to automate as much as possible, so programmers can concentrate

on defining what they want to do, and the language will automatically figure out how.

3. Maximise the Coherence of DesignThrough strong focus on core design principles across a vast span of functionality,

maintain a unified and elegant structure where everything fits together.

4. Represent everything in Symbolic LanguageIt represents everything — data, formulas, code, graphics, interfaces, etc. — as

symbolic expressions, allowing a new level of programming flexibility and power.

5. Have a broad built-in model of the worldThrough its Wolfram|Alpha lineage, it knows how to do not just computations about

abstract data structures, but also ones that directly reference things in the real world.

6. 

Deploy the language everywhere: Desktop, Cloud, MobileBuilding on 25+ years of software engineering, any program can immediately be

deployed across the full spectrum of modern production environments.

7. Make computable documents part of the languageBuilt into the Wolfram Language are "notebook" documents that mix executable code

with text, graphics, interfaces, and more.

8. 

Conveniently connect to everythingThe Wolfram Language has built-in connectivity to a broad spectrum of languages,

services, programs, formats and devices.

9.  Make writing and running programs integratedThe native environment for the Wolfram Language is completely interactive and lets

you instantly run any piece of code.

10.  Make programs of any size convenient 

The Wolfram Language scales from one-line programs to multi-million-line programs, and from single users to large-scale public deployments.

Page 7: Wolfram Report

8/10/2019 Wolfram Report

http://slidepdf.com/reader/full/wolfram-report 7/17

7

5. Internal Design

5.1. Basic Internal Architecture

numbers sequences of binary digits

strings sequences of character code bytes or byte pairs

symbols pointers to the central table of symbols

general expressions sequences of pointers to the head and elements

When you type input into the Wolfram Language, a data structure is created in thememory of your computer to represent the expression you have entered.

In general, different pieces of your expression will be stored at different places in

memory. Thus, for example, for a list such as the "backbone" of the list will bestored at one place, while each of the actual elements will be stored at a different place.The backbone of the list then consists just of three "pointers" that specify the addresses incomputer memory at which the actual expressions that form the elements of the list are to

 be found. These expressions then in turn contain pointers to their sub expressions. Thechain of pointers ends when one reaches an object, such as a number or a string, which isstored directly as a pattern of bits in computer memory.

Crucial to the operation of the Wolfram Language is the notion of symbols such as .

Whenever appears in an expression, the Wolfram Language represents it by a pointer.

But the pointer is always to the same place in computer memory — an entry in a centraltable of all symbols defined in your Wolfram Language session.

This table is a repository of all information about each symbol. It contains a pointer to astring giving the symbol's name, as well as pointers to expressions that give rules forevaluating the symbol.

• Recycle memory as soon as the data in it is no longer referenced.  

5.1.1. The basic principle of Wolfram System memory management

Every piece of memory used by the Wolfram System maintains a count of how many pointers currently point to it. When this count drops to zero, the Wolfram System knowsthat the piece of memory is no longer being referenced, and immediately makes the pieceof memory available for something new.

This strategy essentially ensures that no memory is ever wasted, and that any piece ofmemory that the Wolfram System uses is actually storing data that you need to access inyour Wolfram System session.

• Create an expression corresponding to the input you have given. 

• Process the expression using all rules known for the objects in it. • Generate output corresponding to the resulting expression. 

Page 8: Wolfram Report

8/10/2019 Wolfram Report

http://slidepdf.com/reader/full/wolfram-report 8/17

8

5.1.2. The basic actions of the Wolfram Language

At the heart of the Wolfram Language is a conceptually simple procedure known asthe evaluator, which takes every function that appears in an expression and evaluates thatfunction.

When the function is one of the thousand or so that are built into the Wolfram Language,what the evaluator does is to execute directly internal code in the Wolfram Language.This code is set up to perform the operations corresponding to the function, and then to

 build a new expression representing the result.

5.2. Algorithms of the Wolfram Language

The built-in functions of the Wolfram Language implement a very large number of

algorithms from computer science and mathematics. Some of these algorithms are fairlyold, but the vast majority had to be created or at least modified specifically for theWolfram Language. Most of the more mathematical algorithms in the Wolfram Languageultimately carry out operations which at least at some time in the past were performed byhand. In almost all cases, however, the algorithms use methods very different from thosecommon in hand calculation.

Symbolic integration provides an example. In hand calculation, symbolic integration istypically done by a large number of tricks involving changes of variables and the like.But in the Wolfram Language symbolic integration is performed by a fairly small numberof very systematic procedures. For indefinite integration, the idea of these procedures is

to find the most general form of the integral, then to differentiate this and try to match upundetermined coefficients.

Often this procedure produces at an intermediate stage immensely complicated algebraicexpressions, and sometimes very sophisticated kinds of mathematical functions. But thegreat advantage of the procedure is that it is completely systematic, and its operationrequires no special cleverness of the kind that only a human could be expected to provide.In having the Wolfram Language do integrals, therefore, one can be confident that it willsystematically get results, but one cannot expect that the way these results are derivedwill have much at all to do with the way they would be derived by hand.

The same is true with most of the mathematical algorithms in the Wolfram Language.One striking feature is that even for operations that are simple to describe, the systematicalgorithms to perform these operations in the Wolfram Language involve fairly advancedmathematical or computational ideas.

Thus, for example, factoring a polynomial in is first done modulo a prime such as 17 byfinding the null space of a matrix obtained by reducing high powers of modulo the

 prime and the original polynomial. Then factorization over the integers is achieved by"lifting" modulo successive powers of the prime using a collection of intricate theoremsin algebra and analysis.

Page 9: Wolfram Report

8/10/2019 Wolfram Report

http://slidepdf.com/reader/full/wolfram-report 9/17

9

The use of powerful systematic algorithms is important in making the built-in functionsin the Wolfram Language able to handle difficult and general cases. But for easy casesthat may be fairly common in practice it is often possible to use simpler and moreefficient algorithms.

As a result, built-in functions in the Wolfram Language often have large numbers of extra pieces that handle various kinds of special cases. These extra pieces can contributegreatly to the complexity of the internal code, often taking what would otherwise be afive-page algorithm and making it hundreds of pages long.

Most of the algorithms in the Wolfram Language, including all their special cases, wereexplicitly constructed by hand. But some algorithms were instead effectively createdautomatically by computer.

Many of the algorithms used for machine-precision numerical evaluation of mathematicalfunctions are examples. The main parts of such algorithms are formulas which are as

short as possible but which yield the best numerical approximations.

Most such formulas used in the Wolfram Language were actually derived by the WolframLanguage itself. Often many months of computation were required, but the result was ashort formula that can be used to evaluate functions in an optimal way.

5.3. Symbolic Programming and Computation

Symbolic programming is based on the concept of recasting core features of human languageinto a computationally active form.

Our cognitive model of computation is typically a three-stage process:1) describing the computation, 2) executing that description, and 3) outputting the results.

The ―language‖ part of most programming languages begins and ends with stage one.

Linguistic structures are erected to describe the program. But the execution of the program istypically oriented around an entirely different system of types and objects; and likewise, the

 program‘s output structure tends to resemble nothing particularly language-like.

Symbolic programming uses linguistic structures as the foundation of all aspects of

computation. From a computation‘s description, to how the computation executes, to howhumans interface with the results, the exact same basic tree structure is used throughout.

This is a powerful unification, making possible many useful computations that in othersystems range from cumbersome to practically impossible. We‘ll see examples along the

way, but let me first describe what these linguistic structures actually are.

5.3.1. Symbols 

Symbols are the basic atoms of language and also of symbolic programming. The point of

symbols is to have distinct pieces of notation –  be they words or mathematical functions ormusical notes – which are then assigned an interpretation within the overall system.

Page 10: Wolfram Report

8/10/2019 Wolfram Report

http://slidepdf.com/reader/full/wolfram-report 10/17

10

In programming, the defining feature of symbols is that they can stand for themselves. This isin contrast to variables, which must stand for some other value or be considered an error. Forinstance, JavaScript cannot perform the operation x + x unless x has a value:

while Wolfram Language has no trouble:

By existing simply as distinct entities, symbols serve as lightweight carriers of meaning.They are inert, but can acquire meaning through combination with other symbols.

Because Wolfram Language  manipulates things abstractly, it is able to do more-precisecomputation than some other systems. As the above example makes clear, symbols are onlythe building blocks: the real action is with the arrangements of symbols.

5.3.2. Symbolic Expressions 

An English phrase is built of subphrases. A mathematical formula is built of subformulas. A

musical score is built of bars, which contain notes. A web page layout is built fromsublayouts. When humans want to communicate nontrivial structures, they use hierarchicalnesting.

Across different languages and domains, these structures, or trees, take many syntactic forms.However, they can always be reduced to very simple data structures known as symbolicexpressions. Symbolic expressions simply capture the concept of arranging symbols intotrees. Here are a few trees built from the symbol ―e‖: 

Like the symbols themselves, trees of symbols may simply exist, without a need tocorrespond to something else:

Symbolic expressions are the fabric from which we construct meaning. Different treestructures correspond to different meanings.

A tree with symbols like Plus and Power may represent an arithmetic expression, while thesymbol SetterBar can be combined with a subtree indicating the current selection and a list of

 possible alternatives:

Page 11: Wolfram Report

8/10/2019 Wolfram Report

http://slidepdf.com/reader/full/wolfram-report 11/17

11

Everything in Wolfram Language  is ultimately represented using this uniform simplestructure. At the formal level, it ensures a degree of structural compatibility across all parts ofthe far-flung system. It also provides a system for introducing your own lightweight yetsophisticated structures.

Pure functions, for example, in Wolfram Language, can be represented with Function:

MyPureFunction[var_, expr_][arg_] := expr /. var -> arg 

Let‘s describe a function that adds 1 to its argument, and attach it to the symbol f. Notice thestructure stays inert, and therefore can be passed around as data:

When brought into contact with an argument, the definition fires.

In symbolic programming, it is commonplace for a programmer to create abstractions that inanother language would have required a modification of the core specification. This is the

 beauty of language: that creating new concepts does not require inventing new atomic―types‖ of things– only new arrangements of structure.

5.3.3. Symbolic Computation 

The most important and unique aspect of symbolic programming is that these tree structurescan be made computationally active. They don‘t just describe things– they actually execute.

The basic idea is that because meaning is encoded by structure, computation – thetransformation of one meaning into another  – corresponds to the transformation of onestructure into another.

For instance, position 1 in the SetterBar expression represents the current selection. Bymodifying the tree at that position, we modify the meaning of the expression as a whole:

Page 12: Wolfram Report

8/10/2019 Wolfram Report

http://slidepdf.com/reader/full/wolfram-report 12/17

12

A computation begins and ends with unique, domain-specific structures. The process ofcomputation, however, is executed using extremely general methods that are exactly the sameacross domains:

So, computation proceeds by very generic tree transformations. Rather conveniently, trees arealso how we specify the computations themselves.

This reduces the process of computation into a linguistic puzzle: using trees to describe howother trees should transform and intersect. Not only does this allow computational primitivesto have an immediate and clear meaning, it also allows the process of language design to

 proceed organically as regularities in these tree structures are discovered and abstracted.

5.3.4. Representing and Interacting with Symbols 

Symbolic programming‘s comprehensive emphasis on meaning allows a unique perspective

on input, output, and the whole interaction cycle between human and machine computation.

The basic idea is that symbolic expressions are the canonical, abstract containers of meaning.Given a symbolic expression, its meaning can then be embodied in a number of useful ways.

For example, the expression Plus[2,2] is rendered as 2+2. And Graphics[Rectangle[]] rendersas:

And it works similarly for all sorts of domain-specific mathematics notation, documents, andeven sound and music primitives.

On their own, these are useful representations. But the fact that they are still really the sameunderlying expression leads to a powerful consequence: human computation and

 programmatic computation become structurally equivalent.

If I interactively create a Disk using a drawing palette:

Page 13: Wolfram Report

8/10/2019 Wolfram Report

http://slidepdf.com/reader/full/wolfram-report 13/17

13

its underlying data structure is the same as it would be if I had typed in the code, or if it had been generated by a program:

Graphics[Disk[{0.49, 0.49}, {0.35, 0.35}],ImageSize -> {36.335, Automatic},PlotRange -> {{0, 1}, {0, 1}}]

Completely different representations – in this case text and graphics – are immediately and

transparently compatible, because in the end they are all just expressions. Here we have some―zero-overhead‖ code to color just the Disks of a graphic:

The equivalence between these representations, and between human and programmaticallygenerated structures, opens the door to exceptionally powerful ways of interacting withcomputation. It is the basis of Wolfram Language‗s dynamic interactivity framework. 

The implications, however, go much further than that. Symbolic programming is the firstabstraction that can uniformly span all three stages of computation, from specification toexecution to output, and as a result it can leverage each aspect against the others.

Programs can be created by traditional programming, by the programs themselves, or byinteraction with what is considered output. The process of computation can be equivalently

executed by the user or by the machine. Output is simply exposing a window into a piece of a(possibly running) program.

5.4. Software Engineering of the Wolfram System

The Wolfram System is one of the more complex software systems ever constructed. It is built from several million lines of source code, written in C/C++, Java, and the WolframLanguage.

The C code in the Wolfram System is actually written in a custom extension of C which

supports certain memory management and object-oriented features. The WolframLanguage code is optimized using Share and Dump Save. 

Page 14: Wolfram Report

8/10/2019 Wolfram Report

http://slidepdf.com/reader/full/wolfram-report 14/17

14

In the Wolfram Language kernel the breakdown of different parts of the code is roughlyas follows: language and system: 30%; numerical computation: 20%; algebraiccomputation: 20%; graphics and kernel output: 30%.

Most of this code is fairly dense and algorithmic: those parts that are in effect simple

 procedures or tables use minimal code since they tend to be written at a higher level — often directly in the Wolfram System.

The source code for the kernel, save a fraction of a percent, is identical for all computersystems on which the Wolfram System runs.

For the front end, however, a significant amount of specialized code is needed to supporteach different type of user interface environment. The front end contains about 700,000lines of system-independent C++ source code, of which roughly 200,000 lines areconcerned with expression formatting. Then there are between 50,000 and 100,000 linesof specific code customized for each user interface environment.

The Wolfram System uses a client-server model of computing. The front end and kernelare connected via the Wolfram Symbolic Transfer Protocol (WSTP) — the same system asis used to communicate with other programs. WSTP supports multiple transport layers,including one based upon TCP/IP and one using shared memory.

The front end and kernel are connected via three independent WSTP connections. One isused for user-initiated evaluations. A second is used by the front end to resolve the valuesof  Dynamic expressions. The third is used by the kernel to notify the front endof  Dynamic objects which should be invalidated.

Within the C code portion of the Wolfram Language kernel, modularity and consistencyare achieved by having different parts communicate primarily by exchanging completeWolfram System expressions.

But it should be noted that even though different parts of the system are quiteindependent at the level of source code, they have many algorithmic interdependencies.Thus, for example, it is common for numerical functions to make extensive use ofalgebraic algorithms, or for graphics code to use fairly advanced mathematical algorithmsembodied in quite different Wolfram System functions.

Since the beginning of its development in 1986, the effort spent directly on creating thesource code for the Wolfram System is about a thousand developer-years. In addition, acomparable or somewhat larger effort has been spent on testing and verification.

Page 15: Wolfram Report

8/10/2019 Wolfram Report

http://slidepdf.com/reader/full/wolfram-report 15/17

15

6. WHERE TO USE WOLFRAM LANGUAGE ?

1.  Maximum productivity programming

A key idea of the Wolfram Language is to maximize programmer productivity by automatingas much as possible and by building as much as possible directly into the language.

2.  Algorithmically Oriented programming

If you're doing algorithmically oriented programming, it simply doesn't make sense to useanything other than the Wolfram Language.

3.  Computing with real world data

The Wolfram Language is unique in its integration of real-world constructs and entitiesdirectly into the language. Compute directly with units, geography, dates, images, andthousands of other domains.

4. 

Ultra-High-Level Scripting LanguageThe symbolic character of the Wolfram Language makes it ideal for ultra-high-level scriptingof external systems and languages — routinely vastly improving on existing native interfaces.

5.  High level Mata ProgrammingThe symbolic character of the Wolfram Language — and its integration of computabledocuments — makes it an ideal choice for metaprogramming and symbolic code manipulation.

6.  Self-Documenting Large Scale Development

The Wolfram Language supports multi-million-line software development by large teams,with uniquely modular symbolic interfaces and integrated rich documentation capabilities.

7.  Rapid Content Deployment

Through the Wolfram Universal Deployment System, the Wolfram Language provides anunprecedentedly direct path to production-scale deployment on desktop, cloud, mobile andembedded systems.

8.  Analytics/Visualization ProgrammingThe Wolfram Language sets the gold standard for analytics and visualization, with anunprecedented level of power and ease of use on the desktop and in the cloud.

9.  Programming the Internet Things

With its device framework, ability to handle real-world data, built-in distributed computing,and both cloud and embedded implementations, the Wolfram Language is in a unique positionto support the Internet of Things.

10. Programming Education

The modern knowledge-based character of the Wolfram Language makes it uniquely suitableas a programming language, in which small amounts of code can produce remarkable results.

Page 16: Wolfram Report

8/10/2019 Wolfram Report

http://slidepdf.com/reader/full/wolfram-report 16/17

16

7. CONCLUSION

With newest innovation on Symbolic Languages and development of 25+ years, Wolfram

Language stands out by being still compatible with software used in the first release ofMathematica. This certainly states that the ideas behind the language have grown over time

 but the foundations was laid on solid grounds which till now are completely valid. The ability

to allow developers to design code with something basic as natural language and yet allow

them access to the vast resource of data and algorithms put together piece-by-piece makes for

a very easy access to computing. This is exemplified by the fact that the Wolfram Language

is being provided free of cost with the RaspberryPi and Intel Edison for educational purposes.

Besides, the low access barrier the vast set of algorithms allow for quick prototyping of

 products which means one can approximate the working idea in minutes and then tweak the

 parameters to the specific challenges. Thus speeding up development in the early iterations

allows for faster product development cycles. Supplemented by access to in-built APIs for

 popular platforms and data means data analysis becomes a breeze, much like it had been with

Mathematica with the additional feature of being more programmable.

Thus, Wolfram Language with it Knowledge-based capabilities makes for an interesting

work. The language is easily built for the cloud age, where all devices are connected and data

need not be stored locally. The language is vastly capable and only after it has been released

formally will be able see the glimpses of what all creative minds can do with its power.

However, the proprietary nature of Wolfram language will be an issue with most users.

Page 17: Wolfram Report

8/10/2019 Wolfram Report

http://slidepdf.com/reader/full/wolfram-report 17/17

17

8. REFERENCES

1.  Cohen, Joel S. (2003). Computer Algebra and Symbolic Computation: Mathematical Methods.

AK Peters, Ltd. p. 14. ISBN 978-1-56881-159-8.

2. 

Making Computer Algebra More Symbolic (Invited), Stephen M. Watt, pp. 43-49, Proc.

Transgressive Computing 2006: A conference in honor or Jean Della Dora, (TC 2006), April

24 – 26, 2006, Granada Spain.

3.  Ma, Kin-Keng; Khoo Yit Phang, Jeffrey S. Foster, Michael Hicks (2011). "Directed Symbolic

Execution". Proceedings of the 18th International Conference on Statis Analysis: 95 – 111.

Retrieved 03/04/2013.

4.  Robert S. Boyer and Bernard Elspas and Karl N. Levitt SELECT--a formal system for testing

and debugging programs by symbolic execution, Proceedings of the International Conference

on Reliable Software, 1975,page 234--245, Los Angeles, California.

5.  William E. Howden, Experiments with a symbolic evaluation system, Proceedings, National

Computer Conference, 1976.

6.  Wolfram, Stephen, A New Kind of Science. Wolfram Media, Inc., May 14, 2002. ISBN 1-

57955-008-8.

7.  Chua, Leon O, A Nonlinear Dynamics Perspective of Wolfram's New Kind of Science

(Volume V). World Scientific Publishing, March, 2012. ISBN 978-981-4390-51-4.

8.  The Evolutionary Design of Collective Computation in Cellular Automata, James P.

Crutchfeld, Melanie Mitchell, Rajarshi Das (In J. P. Crutch¯eld and P. K. Schuster (editors),Evolutionary Dynamics|Exploring the Interplay of Selection, Neutrality, Accident, and

Function. New York: Oxford University Press, 2002.)

9.  http://reference.wolfram.com/language/

10.  http://reference.wolfram.com/mathematica/

11.  http://www.wolframalpha.com/