Before domain-specific languages (DSLs) and REPL environments (read, execute, print, loop) became fashionable, computing pioneer Charles (Chuck) Moore had built, by 1968, what he viewed as the perfect computer programming language, which he named FORTH (for fourth generation language). What he had kept in view during its creation was an extreme austerity in syntax and structure as he searched for the minimalist system required to interact with a computer and be able to write custom problem-oriented languages to solve them. This approach is what he considered to be “programming”: you solve your problem by developing an application specific language with multiple levels of abstraction giving you in the end a small dictionary of simple words (in code) which represents the solution cleanly and in overall the fewest lines of code. Let’s look at this idea, how it has worked out over the years, and how you can apply this, regardless of the language you choose to (or have to) work with. This article looks at Forth, Lisp & Ruby, language that make it easy to solve classes of problems by writing your own DSL, i.e. by programming a specific “problem-oriented language” in which to solve your problem.
Continue reading this article…
Written July 7th, 2012, Revised Jan 12th, 2013, Updated & extended Jan 25th, 2020
There are at least seven distinct fields of computer programming that have less to do with languages and more to do with the target platform, desired functionality, and intended user. This article provides a short introduction to each, intended as a brief orienting survey. These are:
(1) Bare metal programming, not requiring an operating system,
(2) Application programming, in which an operating system is presumed,
(3) Mathematical computing and algorithms, from matrix computations and statistical learning to wavelet compression and cryptography,
(4) Web or Client-Server programming, in which the application lives in a client browser in communication with content generated on-the-fly from programs running on central servers,
(5) Mobile or App programming,
(6) Cloud programming, and
(7) Exotic programming (traditional super-computing, quantum computing, biological computing/soft robotics, deep machine learning).
Continue reading this article…
By Assad Ebrahim, on January 20th, 2018 (21,679 views) |
Topic: Maths--Technical
By Assad Ebrahim, on November 15th, 2010 (11,780 views) |
Topic: Maths--Data Science
(Statistics and Data Mining II)
Automated decision problems are frequently encountered in statistical data processing and data mining. An heuristic filter or heuristic classifier typically has a limited set of input data from which to arrive at a set of conclusions and make a decision: REJECT, ACCEPT, or UNDETERMINED. In such cases, pre-processing the input data before applying the heuristic classifier can substantially enhance the performance of the decision system.
In this article, I’ll motivate the use of a radar-tracking algorithm to improve the performance of automated decision making and statistical estimation in data processing. I will illustrate using the website visitation statistics problem.
Continue reading this article…
By Assad Ebrahim, on September 3rd, 2010 (16,552 views) |
Topic: Maths--Data Science
(Statistics and Data Mining I)
For a variety of reasons, meaningful website visitation and visitor behavior statistics are an elusive data set to generate. This article introduces the visitor statistics problem, and describes seven challenges that must be overcome by statistical and data analysis techniques aiming for accurate estimates. Along the way, we’ll encounter the “Good News Cheap, Bad News Expensive” Paradox of Data Mining — or, why information is often used “as-is”.
This article is the first in a series on algorithms, statistics and data analysis techniques (using free and open source tools) using the visitor statistics problem as a vehicle for illustration.
Continue reading this article…
By Assad Ebrahim, on February 25th, 2010 (49,817 views) |
Topic: Mathematics, Maths--Technical
Updated! February 5, 2017
The value of zero raised to the zero power, , has been discussed since the time of Euler in the 18th century (1700s). There are three reasonable choices: 1,0, or “indeterminate”. Despite consensus amongst mathematicians that the correct answer is one, computing platforms seem to have reached a variety of conclusions: Google, R, Octave, Ruby, and Microsoft Calculator choose 1; Hexelon Max and TI-36 calculator choose 0; and Maxima and Excel throw an error (indeterminate). In this article, I’ll explain why, for discrete mathematics, the correct answer cannot be anything other than 0^0=1, for reasons that go beyond consistency with the Binomial Theorem (Knuth’s argument).
Continue reading this article…
By Assad Ebrahim, on January 31st, 2010 (8,393 views) |
Topic: Education, Maths--Philosophy
The mathematician Alfred North Whitehead observed that “[Advancement occurs] by extending the number of important operations which we can perform without thinking of them.” (Introduction to Mathematics, 1911 ) This is certainly true in mathematics where the development of judicious notation, accompanied by good mathematical technique, extends the capability to perform chains of complex reasoning accurately and efficiently. Through proper problem formulation (tractable yet generalizable), one can sometimes pass from a single insight to the solution of a family of problems, and in some cases, to the solution to the general question itself.
Here, mathematical computing can provide a useful benefit: helping to efficiently explore conjectures, dispatch with false directions, and save time during the development, error-checking and validation stages of obtaining general results. In industry, where specific or semi-general results are needed fast, such tools allow rapidly working up the required material and providing the necessary certainty before the fully general results or complete proof are ready.
Continue reading this article…
|
Stats: 1,089,379 article views since 2010 (Aug '24 update)
Dear Readers: Welcome to the conversation! We publish long-form pieces as well as a curated collection of spotlighted articles covering a broader range of topics. Notifications for new long-form articles are through the feeds (you can join below). We love hearing from you. Feel free to leave your thoughts in comments, or use the contact information to reach us!
|