The power of a programming language lies in the size and quality of the libraries available for it. When learning computer programming the student is exposed first of all to the syntax of the language which takes a great amount of time to come grips with for the newbie but can easily be grasped in a shorter period of time by the veteran.
During the course of the study, it is customary to expose the student to writing toy programs that solve manageable problems enabling them to grasp the language syntax in action. Examples are usually easy with very difficult ones kept for the exercises.
The author hopes that at the end of the book when the good student has gone through all the examples and exercises, they should be comfortable enough with the language to start writing large programs. In my book: How to learn programming I go into details of the entire programming education enterprise so I will not go into much detail here. It suffices to say that just reading a book on programming alone will not make you a full programmer, although I admit it is the first step on the path.
Every good programming language comes with some kind of built-in library, which contains functions or classes that are useful in day to day programming activities. You do not need to write certain utilities from scratch using the raw syntactic capabilities of a programming language as some prewritten program will already be available to bring into your own programs using some kind of import mechanism. It is usually a good thing to learn as much as you can of your programming language library as covered in the documentation as it will save you a lot of time and effort and also help you avoid reinventing the wheel. Like they say "keep your documentation under your pillow"
Even though most programming languages come with some kind of library, they barely cover all you need to do and when it comes to some tasks you would have to install an external library to accomplish it. In python if you want to do some visualization like plotting some function you would have to get matplotlib and install it in your local system. If you want to do numerical computation then you would get numpy, etc.
It would be hard to write programs without the help of libraries because you are not an expert in all domains. Writing your own numerical computing system if you are not an expert in the domain would be hard and error-prone. If you wanted to do Machine learning/Artificial Intelligence stuff like deep learning with Python programming language you are better off using some platform like Tensorflow rather than building your own which will be difficult and time consuming even if you were an expert.
The problem with using external libraries is that they all come with their own conventions. If you were doing some AI/ML stuff in python, you would not only install the Tensorflow libraries alone or whatever toolkit you prefer, you would also need matplotlib or seaborn for visualization, pandas for data work, etc. Each of these libraries has its own calling conventions and a lot of other idiosyncrasies. But this is what traditional programming is all about, it is really hard work and mentally tasking. But does it have to be? No! I don't think so.
* * *
Wolfram language is a game changer in the sense that apart from being extremely simple and very easy to learn, 99% of what you want to do is already provided by the language core by default! But don't let its simplicity fool you, it's also extremely powerful and used for all kinds of advanced R&D in many Fortune 500 companies around the world. It is also the core language that powers powerful stuff like Wolfram Alpha, which is an online platform for calculating anything and everything! So in many practical programming scenarios, using the Wolfram Language, you would not need to import any external libraries as you could just call inbuilt functions to do almost any domain-specific programming task.
Your role as a Wolfram language programmer would be merely stitching together already existing powerful functionality to solve your problem rather than learning one library after the other and dealing with deprecation messages, etc. The names of the functions in Wolfram language are so carefully chosen that they fit like a neat glove with your thinking so remembering function names is super easy because its the kind of name you would personally want to give to it.
Also, there is no subclassing, constructing constructors, or satisfying any interface, you just get to solving problems you are interested in rather than deal with issues that are not relevant to the problem you are solving. Because most low-level stuff has already been covered by built-in functions your mind is really focused when writing programs in Wolfram language because you are thinking at the highest level of abstraction possible.
Sometimes your thinking process while writing Wolfram language is so high level you could even start using natural language in the Notebook interface
In most other programming languages, when solving a problem, you usually are not thinking directly at the problem but dealing with all kinds of low-level variable tweaking, class structuring, etc. These extra requirements can distract you from the fact that you actually want to solve a problem you care about as much of your time is spent dealing with the requirements of the language rather than the solution to your problem.
In the Wolfram Language, there are now altogether 5000+ functions in the language, covering everything from visualization to machine learning, numerics, image computation, geometry, higher math and natural language understanding—as well as lots of areas of real-world knowledge (geo, medical, cultural, engineering, scientific, etc.). Lots of hardcore software engineering capabilities—instant cloud deployment, network programming, web interaction, database connectivity, import/export (200+ formats), process control, unit testing, report generation, cryptography, blockchain, etc.
The goal of the Wolfram Language is simple, if ambitious: have everything be right there, in the language, and be as automatic as possible. Need to analyze an image? Need geographic data? Audio processing? Solve an optimization problem? Weather information? Generate 3D geometry? Anatomical data? NLP entity identification? Find anomalies in a time series? Send a mail message? Get a digital signature? All these things (and many, many more) are just functions that you can immediately call in any program you write in Wolfram Language. (There are no libraries to hunt down; everything is just integrated into the language.)
As cool as this is, the sad fact is that many people have not gotten exposed to this language due to the fact that the language was indeed only available in products like Mathematica, Wolfram Desktop, Wolfram One, Wolfram Enterprise, etc. These products cost some money because they are huge engineering projects and actually offer more than just the Wolfram language itself. They were written in Wolfram language but also provide a platform where you could build your own projects in Wolfram language.
Stephen Wolfram in a recent blogpost spoke about how people who had used Mathematica in college, probably because their university had paid for some site-licencing, had since then not used it and are not aware of all the recent sophisticated capabilities. Although access to the Wolfram language has always been free in the Wolfram cloud, you still didn't have some locally downloadable stuff you could code with offline.
To remedy this and enable everyone to have free access to the raw capabilities of the language, the company has made a Free downloadable Wolfram Engine available to anyone!
So what can you do with the free version?
1. Develop a product for yourself or your company
2. Conduct personal projects at home, at school, at work
3. Explore the Wolfram Language for future production projects
As your project scales and moves into production-grade, you can upgrade your licence to allow for larger-scale deployments. But the free version is not limited in any major way. The difference between the free Wolfram Engine and a full-featured product like Mathematica is like the difference between vanilla Python programming language that you get on www.python.org and something as full-featured as Anaconda, the Python mega package. Details of what you can do with the free licence are available on the download page and the upgrading is pocket-friendly.
If you want to use the Wolfram Engine for an open source project you can simply contact the company and discuss your requirements.
There are many usage scenarios you can take advantage of but my favourite is installing it, getting an IDE extension from the developer page and going ahead to write scripts and run them from the command line.
If you're a die-hard Python programmer but would still like to have access to certain Wolfram language functionalities, you could still call Wolfram language from python! Without the Wolfram engine, the wolframclient will connect to the cloud after you $pip install wolframclient to provide Wolfram language functionality but if you have a local version of the Wolfram Engine then it will use it and of course, you gain performance from local availability.
If you have not already done so take the Wolfram Engine for a spin today!