Translation of Stephen Wolfram's post (Stephen Wolfram) " How to Teach Computational Thinking ". I express my deep gratitude to Polina Sologub for assistance in translating and preparing the publication.
Computational thinking will become the defining characteristic of the future, and that is why it is so important to teach it to children now. Around the formation of mathematical thinking, children traditionally have a lot of controversy, but this problem fades in comparison with the importance of learning computational thinking. Of course, there are certain areas (we are talking about everyday life, and about various professions), which provide for the use of traditional mathematical thinking. But computational thinking will be needed everywhere; Moreover: it will be the key to success in almost any career in the future.
Doctors, lawyers, teachers, farmers ... The future of the representatives of all these professions is closely connected with computational thinking. This applies to any field of activity. ')
I noticed one interesting trend. Choose any area X - from archeology to zoology. Either there is a “computational X” there, or it will soon appear.
So how do we prepare today's children for this future? For 40 years I have been connected with the topic of computational thinking, and for the same amount of time I create technologies for it and apply them. Today I have a clear idea of ​​what is required for the formation of computational thinking. The question is how to teach this to children. I think that now I have a good answer to it: this is the Wolfram Language . In the Wolfram Language there are technologies through which you can teach the computational thinking of even children.
I am personally very interested in this: for example, access to Wolfram | Alpha on the Internet has been free for several years. And now, after launching theWolfram Open Cloud service , anyone anywhere can start learning computational thinking with the Wolfram Programming Lab using Wolfram Language . But this is only the beginning, and I will continue to talk about interesting new things that have now become possible.
What is computational thinking?
Well, first, let's try to define what we mean by “ computational thinking ”. Its intellectual core consists in systematically formulating something with a sufficient degree of clarity (so that the computer can be explained what needs to be done). Mathematical thinking is connected with the formulation of something in such a way that it can be solved mathematically (when it is possible). Computational thinking is much broader.
But how to "tell" the computer something? I need a language. Thanks to the Wolfram Language, we can now directly communicate with computers about what interests us. The Wolfram Language is based on knowledge: it knows the cities, or the spices, or the songs and photographs; and he knows how to do calculations with them. And as soon as we have an idea that we can formulate computationally, then we can express it with the help of language and (thanks to three decades of technology development) implement it as fully as possible.
Wolfram Language is a programming language. Therefore, when you write on it, you do programming. However, this is a new kind of programming . This is a language in which you can directly implement computational thinking, and not just tell the computer step by step what low-level operations it should perform. This is the programming by which people (including children) embody their ideas.
Programming (and the corresponding education) traditionally consists in “telling” the computer what to do. But thanks to the technologies built into Wolfram Language, you can work at a much higher level and focus on computational thinking, not just programming.
Of course, there are a number of software developers in the world who can write low-level programs in languages ​​like C ++, or Java, or JavaScript, and can work with details. But this number is very small compared to the number of people who should be able to think computationally.
Wolfram Language (especially in the form of Mathematica ) has been widely used in technical research and development around the world for more than a quarter of a century , and with its help a huge number of important inventions and discoveries have been made. All these years we have gradually supplemented my initial vision of an integrated language in which every possible area of ​​knowledge is embedded and automated. And the most interesting thing is that we actually did it for a wide range of areas - including all the disciplines that are traditionally taught in schools.
Seven years ago, we released Wolfram | Alpha , which children (and adults) use to answer questions. In Wolfram | Alpha, everyday English is used as the input signal, and then complex calculations are performed on the Wolfram Language with the subsequent automatic generation of result pages. I think Wolfram | Alpha is a great illustration of what you can do with the Wolfram Language. True, we are talking about "quick" questions that can be expressed in a few words.
What about more complex questions? Normal English will not be enough here. In order to achieve a certain level of accuracy and obtain certain results, one could create a very complex and incomprehensible language. The good news is that there is an alternative: the Wolfram Language, which was created so that it can be used to express complex things easily .
To start using Wolfram | Alpha, no skills are required. But if you want to go further, then you need to learn how to formulate and structure. In other words, you need to learn computational thinking. And the main thing is that Wolfram Language is a language in which you can do something insofar as he managed to transcend simple programming.
Meet the Wolfram Language
What does the first meeting of children with Wolfram Language look like? To understand how to teach computational thinking, over the past few years I have spent quite a lot of time learning Wolfram Language with children. Sometimes I worked with large groups, sometimes with small ones, and sometimes I just noticed a child at an adult event and spent the time with him, rather than with adults. I worked with both high school and high school students (11-14 years old).
If I study with one child or with a small group, I always insist that the children enter the data themselves. I usually start with something that everyone knows. For example, we want to calculate 2 + 2. Children enter this expression and see that, yes, the computer produces a result familiar to them:
In the future, children will often experiment with some other basic arithmetic operations. It is very important that the Wolfram Language allows them to make an entry and immediately see the result.
After that, I usually suggest that they try something that will result in more numbers as a result:
Often they ask if it’s okay to have such a long number, or if the computer is broken. I suggest trying other examples, and children do calculations that instantly generate many pages of numbers. Such large numbers are very impressive children. I think the point is that it allows them to see that, yes, the computer can really calculate this (just think how long it will take you to get all these numbers) ...
After they did some of the basic arithmetic, it’s time to try some other functions. The most common function I usually start with is Range :
Range is a good function in the sense that it is simple, and at the same time very visual and allows you to quickly get the feeling that you can really get your computer to do what you want. The Range function is also good because it's easy to use to create something big. Often, I suggest that they try to apply this function to [1000]. Then someone usually asks if it’s possible to construct a range of numbers from 1 to 10,000. I suggest we try this too.
I interact with each child or group of children differently. However, most often the next step is to render the list , which we did:
If the children are familiar with mathematics, I suggest they try to get a list consisting of prime numbers :
If a child has linguistic abilities, we might try to select some random words :
You can use the StringTake function to take the first letter of each word:
Then, using the WordCloud function, you can make a cloud of the first letters of words and see the relative frequency of their occurrence:
Some children ask: "What about the first two letters?".
You can still talk for a while about how many words begin with “non-”, etc. You can go ahead and look at the translations of the words:
In fact, it is easy for a few hours to just do all that I have said so far. But let's look at some other examples. An important feature of the Wolfram Language is that it contains a lot of real data about the world . Here is an example of making a collage from the flags of European countries , where the size of each flag is commensurate with the current population of the country:
Since we talked about color, it is interesting to see at which point in the color space the flags are located (for example, there are not too many “pink countries”):
Wolfram Language allows you to not only perform abstract calculations, but calculations based on real knowledge. It covers a huge range of areas: from traditional STEM areas to art, history, music, sports, literature, geography and so on. Children often like to do something with cards .
We could start from where we are (the Here function). Or start from some kind of landmark. For example, a map with a circumference of 100 miles around the Eiffel Tower:
Here are some more images:
What about the story? How can the Wolfram Language interact with this area? In fact, the Wolfram Language is full of historical knowledge . About countries (
Here, for example, is a comparison of the use of the words “horse” and “car” in books over the past 300 years:
Try doing the same for country names, or inventions, or whatever.
You can go further in one of the many directions. Here is one of them: character graphics . Let's make a ball :
Children are always interested in doing something similar in 3D and turning it around. You can also create 3D graphics — for example, this one, consisting of 100 spheres colored in random colors :
Children of all ages like to create interactive material . Here is a simple "Cyclops eye" that can be built in stages:
There are many interesting directions. For a novice doctor there is anatomy in 3D - you can take the bone geometry and print it in 3D. And so on.
And what's about…
I would never seriously try to work with children (although I have four of my own) before I begin computational thinking. So I did not know what to expect. People around me constantly reminded me of difficult moments that could hinder the implementation of my plans. First, they were skeptical that children could actually work with the source code in the Wolfram Language; they thought they would just get confused in syntax and so on. And the second difficulty was that the children, in their opinion, would not be motivated to do something with the code, if this did not lead to the creation of a game in which it would be possible to play.
It is pleasant to work with children, if only because if you give them a chance, they will very quickly let you know exactly how to interact with them. So what happened next? None of the potential problems became real. But the reasons for this are very interesting.
As for entering a code, one thing needs to be understood: in today's world, most children of secondary school age are used to using the keyboard . Sometimes, when they start typing code, they have to first see where the [] or + keys are. But they have no fundamental problems with input. In addition, they are quite accustomed to studying the exact rules (“i comes before e ...” in English spelling; the order of operations in mathematics, etc.). Thus, memorizing several rules like " square brackets are used in functions " or " function names begin with a capital letter " is not a big deal. And, of course, in the Wolfram Language there are not all those exceptions to the rules that exist in natural language.
I saw that automatic prompts (elements turn red if they are in the wrong place, various auto-completion options are offered, etc.) are very important for children dialing the code. The bottom line is that, despite the theoretical fears of adults, real children, it seems, are easily given a set of syntactically correct code in the Wolfram Language. In fact, I was amazed at how quickly many children “grasped” him. Seeing only a few examples, they immediately began to summarize. And the main thing is that since the Wolfram Language is developed very consistently, the generalizations invented by them actually work. For me, as a language maker, this is a touching moment.
OK, children can enter the Wolfram Language code. But what do they want? Many children like to play games on the computer, and adults often think that they will like to create them. However, according to my observations, this is not the case. For most children, the most important thing about Wolfram Language is that they can immediately do something real with it. They can enter the code, and the computer will immediately do what they want. They can create images, sounds or texts. They can do art. They can do science. They can explore languages. They can analyze Pokemon (yes, there is a lot of Pokemon data embedded in Wolfram Language). And, if they really want, they can make games .
If you ask children about what they might be interested in programming, before they know the Wolfram Language, the answer is usually “games.” But as soon as they learn about the possibilities of the Wolfram Language, they stop talking about games and want to do something “real” instead.
The basics
Despite its thirty-year history, Wolfram Language has only recently reached a level at which you can quickly and convincingly demonstrate to children what computational thinking is. It is important that this is not only the language and the knowledge contained in it; it is also the environment.
The Wolfram document concept, which we invented almost 30 years ago, is a good way to interact with the language for both children and adults. The Wolfram Document is primarily an online document that freely mixes codes, results, graphics, text, and everything else. You can perform calculations, type the code and get the results directly in the document. Results can be dynamic with their own automatically generated user interfaces. And you can write and read explanations or instructions directly in the document. In fact, to bring to mind the documents, it took several decades. But now we have an extremely efficient environment in which it is convenient to work and think (and, of course, study computational thinking).
For many years, documents and the Wolfram Language were only available as desktop software. Now they are also available in the cloud right from your mobile device. This means that any child can simply open the browser and immediately start interacting with the Wolfram Language, creating or editing any document or code.
To make this possible, a large stack of technologies is required. To build it, it took many years of my life. It was very pleasant to see how over the years the most wonderful things were created with the help of our technologies. And I am very glad that with its help it becomes possible to spread computational thinking among future generations.
When we created Wolfram | Alpha , I decided to make it free on the Internet throughout the world. And it was great to see that many people (and especially children) use it daily. When the technology was ready, I decided to also provide free access to the entire Wolfram Language in our Wolfram Open Cloud and set it up so that children (and adults) could learn computational thinking there.
Wolfram | Alpha is set up in such a way that anyone can ask questions in spoken English. This is a good way to support education . However, if you want to delve into the study of computational thinking, you will have to go beyond the usual English language. And here comes to the rescue Wolfram Language.
So how do you start interacting with Wolfram Language? There are probably many answers to this question, which, among other things, depend on the characteristics of the environment and the resources that are available to different children. I want to believe that I personally worked well with the children in our Wolfram summer camp for high school students: I saw very good results obtained through personal mentoring over each child.
The book is available online for free . There are also exercises. I originally intended to write a book for high school and above. It all ended with the fact that quite a lot of high school students (11 and older) came and were enthusiastically engaged in it.
A free online course based on my book will be available soon, and quite a few courses are still under development.
Oh well. When a child opens a browser to learn computational thinking and the Wolfram Language, in which direction should he move? A few months ago, we launched the Wolfram Programming Lab . The free version is in the Wolfram Open Cloud (even the login is not needed there until you want to save your work).
The Wolfram Programming Lab has two main branches. The first is a set of Explorations , each of which is a document with code that you can edit and run. Then the document offers options for where to go next to do your own research.
Explorations allow you to get a taste of the Wolfram Language and computational thinking. In a sense, this is similar to immersive language learning: you start with code that you could write “fluently speaking” and interact with it .
You can use the Wolfram Programming Lab in full both through the browser and through the cloud. However, there is a version for stationary PCs that runs on any standard PC. If you have a Raspberry Pi , it means that you already have a desktop version of the Wolfram Programming Lab , which comes bundled directly with the operating system, including special functions for receiving data from sensors connected to the Raspberry Pi.
I wanted to make sure that the Wolfram Programming Lab is suitable for any child anywhere in the world, regardless of whether it is included in the educational environment. What exactly benefits children is access to people with whom they can work together on something. We plan to create a structure to support this, including, among other things, the Wolfram community . The Wolfram Programming Lab can easily fit into the existing educational structure (not least with the help of the Wolfram Language) to create an analytical system for analyzing performance.
It is worth noting that one of the important features of the Wolfram Cloud infrastructure is that it allows everyone (students and teachers) to publish the results of their research on the Internet.
We are still at the very beginning of the development of the Wolfram Programming Lab and continue to work on its improvement. Some time ago I had a chance to talk with children at a school in Korea, and I asked if they thought they could learn the Wolfram Language. One child responded that the only difficulty was to read the function names in English.
It made me think. As a result, we have introduced code signatures in various languages. You still enter the Wolfram Language code using standard function names, but you get an instant explanation in your own language (by the way, some versions of my book will be available in different languages).
Where can computational thinking go?
So, I talked a little about teaching computational thinking. But how does computational thinking fit into a standard curriculum? Easy!
One might think that computational thinking somehow relates only to STEM education, but this is not so. Computational thinking applies to the entire curriculum . This and sociological research. And languages. And music. And art. Sport. In each of these areas there is much that can be done with the help of computation and computational thinking. And most importantly, all this is available for children. Wolfram Language runs all the internal processes, so you can focus on computational thinking without concentrating on them.
One of the ways to achieve this is to revise what constitutes a “mathematical” education (which was achieved within the framework of the Computer Based Math initiative). Another approach is to insert computational thinking directly into any other area of ​​the curriculum. I noticed that in practice (especially among primary school teachers), those teachers who are enthusiastic about teaching computational thinking often do not have technical training. It's like with the current generation of children: you don't need to be a techie to understand programming and computational thinking.
In the past, to learn low-level computer languages ​​like C ++ and Java, you really had to think like an engineer. Wolfram Language is another story. Of course, for someone who wants to know the language well, you need to learn many things. , .
When I show children examples of computational thinking and the Wolfram Language, I try to figure out what children are interested in. Art? Or science? History? Or video games? Than? I try to come up with an example that lies in their area of ​​interest. And then we run it. As a result, we get some images or visualizations. And then the children look at the result and think it over, based on what they already know. And then almost always start asking questions. "How does this apply to it?"; “How about doing this instead?”, Etc. And this is really good. Because when children ask questions, you understand that they are seriously engaged; they think about what's going on.
Most of the subjects that are taught in school are quite severely limited. Although questions can be asked, they are more reminiscent of “tech support”: help me understand this existing function. They are not like "let's talk about something new." Several times I held sessions with children in which they asked me about something. An interesting experience. Someone will ask a question that can be easily answered in the language of college-level physics. To answer the other one may require knowledge of the graduate level. And then the question will be asked, which I know is not easy to answer even with the help of the latest research. Or maybe the one to which I know the answer, but only because only last month I had a chance to talk about this with a world expert, who himself recently figured out this question. Before I applied this “ask me about something” format, I didn’t know how hard it is when children freely ask questions. But now I understand why most teachers have no choice but to make traditional school subjects much more rigidly limited.
However, using the Wolfram Language as a tool you can do a lot of new things. Because with the Wolfram Language, the teacher does not need to know the whole answer to the question: he just has to be able to formulate the question computationally, and the Wolfram Language will help to calculate the answer. Of course, in order to write code in Wolfram Language, the teacher needs to master certain skills. But it is really interesting and useful - to receive answers to questions together.
I often did what can be called "live experiments." I take a topic (either the one that the audience suggested, or the one that just occurred to me) - and then I study this topic in real time using the Wolfram Language, and see what I can learn about her. Every year it becomes easier as the possibilities and level of automation in the Wolfram Language grows. And it is with a living experiment that we open our Wolfram summer school . For about an hour, we create a document that can be a backlog for the article. This is quite a nervous exercise. But it almost always works well. Most people do not understand: in just an hour you can make a discovery from scratch worthy of publication. Wolfram Language makes it possible. It is clear that all my life I have been gaining experience in the field of computational thinking and making discoveries; however, for those who have a decent knowledge of computational thinking and the Wolfram Language, making a convincing live experiment will be pretty easy.
When I was a kid, I never liked textbook exercises. I always thought it was not too interesting to do what was done by a lot of people before me. And so I always tried to think about various things in which I could see something that no one had seen before. Now that we have the Wolfram Language, this has become much easier. Not every child has a motivational structure the same as mine. But many people get satisfaction from the fact that they are able to do something of their own, and not just repeat the work done before them. With the help of Wolfram Cloud, you can easily share what you have done and, for example, create your own website or application that you can show to your friends or the whole world.
So where are the discoveries that can be made by children? Everywhere! Even in such a well-developed field as mathematics, there is an infinite field for experiments where discoveries can be made. There is a small additional obstacle in science: the need to work with factual data. Of course, a lot of data is built right into Wolfram Language. And getting more data is easier than ever. Maybe someone uses a camera or microphone, or sensors connected via a Raspberry Pi or Arduino , or whatever.
What about humanitarian areas? For this, data is needed again. But, again, many images of famous works of art, texts of books, historical information about countries, and so on are embedded in Wolfram Language. And in the modern world, it is easy to find detailed data on the Internet and import them into the Wolfram Language. It's amazing how easy it has become in our time, for example, to search the Internet for even the little-known documents of centuries ago (this helped me a lot with my hobby - studying history ).
Computational thinking is an area that is truly amenable to project learning. Every year, to the beginning of our summer programs , hundreds of ideas for projects suitable for children are already swarming in my head. With a little help, children can come up with even more. In our summer programs, mostly children work on projects on their own, but at the same time they often join together in groups to work on a specific project. As a rule, we have a specific goal for each of the projects: to make a demonstration, or an application, a description, and, possibly, place Wolfram in the community (the process of review and publication also serves educational purposes).
And, of course, even when a particular project has already been done before, the next time the result will be different. A simple example: writing code is a creative process, and different people will write it in different ways. And, if the project involves working with visualization or user interfaces, different people can creatively and differently approach it.
Creativity is, of course, good. But in practice, much in education resembles a production line, when many students do the same thing. Mathematics has a good feature: when people perform exercises, they receive certain answers that are easy to check (well, at least right down to equivalence questions of algebraic expressions, for which we understand our entire stack of mathematical technologies to understand correctly). When writing, we have, in principle, no other choice but to give them to the test for real people (yes, you can do something through natural language processing and machine learning, but the essence of the essay is interaction with people).
When someone writes a piece of code, this, like writing an essay, is a creative act. But now you are doing what needs to be transferred to the computer. Then it makes sense to let the computer read it and evaluate it. This is still not a trivial task. This requires high technology; However, using the character character of the Wolfram Language, as well as some automated evidence and machine learning, you can put this into practice quite well. For example, this allowed us to post on the Internet the automatically generated exercises from my book Elementary Introduction .
Looking at the final code written by students, it is possible at some level to assess what is happening. Despite the fact that there are an infinite number of possible programs, it is possible to evaluate which of them are correct, and even determine which of them satisfy certain performance criteria. But you can go much further. Because unlike mathematics, where students mull over a solution with a draft, in coding, every step in the process of writing a program is usually done on a computer, and every keystroke is fixed. I myself have long been a personal analyst enthusiast, and from time to time I write small analyzes of the processes involved in writing and debugging programs. However, there are excellent opportunities for this in the field of education: we are talking, firstly, about creating educational analytics (for which Wolfram Language and Wolfram Cloud are ideal), and then to create ways to adapt to the actual behavior and educational process of each student individually.
As a result, we want to get an exact mathematical model of each student. And taking into account modern machine learning technologies that Wolfram Language has, I think we have everything we need for this. And then we would start modeling various situations: for example, what would happen if a student said one or the other (this is necessary to determine how to explain the material or what kind of exercise to give).
With the help of mathematics, this kind of personalization is fairly easy to implement using simple heuristics. When it comes to coding and computational thinking, the problem becomes more complicated. However, computational thinking and complex intrasystem computing will help to do something really good.
The question of how to find out how well someone understood something concrete is always relevant. With the help of a good computational model for each student one could get a complex answer to this question. But in some places you still have to think through various kinds of exercises or tests.
One of the main types of exercises (of which an elementary introduction is complete in my book) has the form "write a piece of code to make an X". However, there are others. One of them is “simplify a given piece of code”, or: “find situations in which this function does not work”. Of course, there are also exercises like “what does this piece of code do?”. But in a sense, they seem stupid: in the end, you can just run the code.
I think it may be helpful for people to do something “like a computer”. This contributes to understanding what computation is and how this computational process works. However, the focus should be on teaching people what they themselves will do. Technology and automation will only spread. It makes no sense to train people to do computer work; need to teach them to work with a computer as a tool.
I heard the arguments about teaching children to do arithmetic without calculators, in the style: “what if you were on a desert island without a calculator?”. Now I hear the same reasoning about teaching children how to program. But, uh, if you were on a desert island without a computer, why would you write code?
What exactly do you need to learn? Computational thinking is really about thinking. It is about structuring the idea and formulating it in such a way that it can then be transferred to a computer, which can then do interesting things.
Of course, there are facts and ideas worth knowing. Some of them relate to the abstract process of computing. Some - how to systematize the world around us. How is color determined? How are points on Earth determined? How can the glyphs of various human languages ​​be presented? And so on. A few years ago we made a poster on the history of the systematic presentation of data . Its content would constitute a full course.
The main goal is to get to the point where you can translate what interests you into computational form.
Often we are talking about the "invention of the algorithm." How to compare the growth of the Roman Empire with the spread of the Mongols? How to calculate it correctly? How to display? Is it possible to say that there are really large craters near the poles of the moon? How can I identify the crater in the picture?
This is an analogue of such things that underlie development in almost all areas (“computational X”). And there are people who learn to be successful in these kinds of things. As part of our company, many of the problems of the “invent algorithm” level are solved every day - and this constitutes a large part of the work on Wolfram Language and Wolfram | Alpha.
The invention of an algorithm or heuristics is, first of all, about understanding what we want. With some effort, it is possible to invent abstract exercises as much as possible, but what is much more useful is issues related to the outside world.
The answer to any question will depend on our view on the structure of the world. From the educational point of view, it is good that the issues of computational thinking overlap with other areas of knowledge. Due to this, a common thinking develops, which is incredibly valuable in almost any area of ​​activity.
What is computing and programming?
A lot has been said about learning how to write code in recent years. Of course, writing code is not the same thing as computational thinking. This is a bit like typing an essay. To write an essay, you will need (manually or using a computer) to somehow fix the text - but this is not the intellectual core of your activity. So how do you teach code writing?
In Wolfram Language, a person must be able to formulate ideas and convert them into code. In some simple examples (which will gradually become more and more), you can simply specify the desired in English. But usually they still write directly to Wolfram Language. And this means that at some level we are dealing with programming.
However, this is a higher level of programming than the one that most programmers are used to. And this is precisely why it is now available to a much wider circle of people, and therefore it makes sense to introduce it into the education system.
But how does all this relate to learning "traditional" programming? At the moment there are two types of learning programming: what could be called "high school level" and "elementary school level." Today, the “high school version” is C ++ and Java. I was somewhat shocked by the fact that even among children studying in schools with a technical bias, it is very rare to find those who have ever seriously studied programming in school.
But even when children learn “programming,” say, in high school, what do they actually learn? Usually we are talking about a set of syntactic details, as well as cycles and variables. As a person who thought about calculations for most of my life, I was disappointed. Of course, these concepts are part of low-level programming languages. But in what we now in the broad sense understand by computations, as well as in computational thinking, they are at best secondary.
What is important? Probably the most important principle is that everything (text, images, networks, user interfaces, etc.) can be represented in computational form. The concepts of functions and lists also play an important role (like the concept of universal computation).
The problem is that what is being taught nowadays has a weak relation not only to computational thinking, but even to programming. Conditions, cycles and variables were central to the first computer languages ​​in the 1960s. In modern computer languages ​​like C ++ and Java, there are much more convenient ways to manage large amounts of code. But their basic computational structure is remarkably similar to that in the languages ​​of the 1960s. And in fact, children (who, as a rule, write small pieces of code) deal with the calculations of the 1960s. (although with the participation of mechanisms designed for large code bases, which makes it more complex).
Wolfram Language is really the language of modern times. Its use would not have been justified in the 1960s: computers were not large enough and fast, and there was nothing like modern cloud systems designed to support a large knowledge base (although in fact even in the early 1960s there were languages ​​like LISP and APL, which were based on ideas of a higher level, resembling the Wolfram Language, but their use was only possible several decades later).
What about cycles and variables? Well, they all exist in Wolfram Language. They are simply not the main principles of the language. For example, in my book Elementary Introduction to Wolfram Language, I talked about assigning values ​​to variables from only chapter 38, after discussing the deployment of complex applications on the Internet.
For example, you want to make a table of the first 10 squares of numbers. Using the Wolfram Language it would be very simple:
But on C, for example, it would look rude:
A person far from programming may ask: “what the hell is all this necessary for?”. But instead of directly telling us what we want, he speaks to the computer in a low-level language what exactly it should do. We tell him to allocate memory to store the integer value n. We say that it is necessary to start with n = 1, and then increase n until it reaches a value of 10. And then in each case we tell the computer that it should draw a square (for fairness, I’ll note that in more modern Python JavaScript , ).