Programming

Book Review: Adventures in Rule-Based Programming – A CLIPS Tutorial

Written by on January 11, 2023 in Knowledge Representation, Programming with 0 Comments
Book Review: Adventures in Rule-Based Programming – A CLIPS Tutorial

Title: Adventures in Rule-Based Programming – A CLIPS Tutorial Author: Gary Riley Publisher: Secret Society Software, LLC Year: 2022 In an earlier article, I had talked about the relevance of Rule-based systems today. In that article I had also listed a few Rule engines that are popular and widely used. One of them is CLIPS, […]

Continue Reading

Std::tie

Written by on December 25, 2022 in C++, Programming with 0 Comments
Std::tie

std::tuple is a widely used abstraction in C++ and has been around since C++11. It is a generalization of std::pair. std::tie is convenient when we want to create a tuple of lvalue references to existing variables. It is a function template commonly used to unpack a tuple into individual objects. In the above example, we […]

Continue Reading

Are Rule-Based Systems Still Relevant Today?

Written by on December 8, 2022 in Knowledge Representation, Programming with 1 Comment
Are Rule-Based Systems Still Relevant Today?

Before Machine Learning came into the mainstream, Rule-based systems were being used actively to solve complex decision making problems. In fact, Rule engines were considered to be an exotic component of Artificial Intelligence and the systems built using these rule engines were called Expert Systems. I still remember learning to use OPS5 a few decades […]

Continue Reading

Using Julia from Mathematica

Written by on November 24, 2022 in Julia, Mathematica, Programming with 0 Comments
Using Julia from Mathematica

In an earlier article, I had shown how it is possible to interact with Mathematica from Julia. In today’s article, I will share the details of how to interact with Julia from within Mathematica. Why would somebody want to execute Julia code inside Mathematica? Although Mathematica is a great symbolic computing environment offering thousands of […]

Continue Reading

Why Learn C++

Written by on November 7, 2022 in C++, Programming with 0 Comments

This is the third and the last article in the series “Why Learn Language-XYZ?”. I talked about Prolog and Lisp earlier. The present article is on C++. Once you have gained reasonable proficiency with Prolog and Lisp, you are ready to learn C++! In my view, C++ is a complex language and requires sufficient maturity […]

Continue Reading

Why Learn Lisp?

Written by on October 20, 2022 in LISP, Programming with 0 Comments

In the last article, I had shared my views on why programmers should learn Prolog, preferably as the first language. What language should one learn next? I strongly pitch for Lisp, to be precise, “Common Lisp”. Lisp happens to be the second oldest (1958) programming language, only after Fortran (1957)! Initially there were several dialects […]

Continue Reading

Why Learn Prolog?

Written by on October 6, 2022 in Programming, Prolog with 1 Comment

There are several programming languages in use today and a simple google search will throw up interesting recommendations of a subset of these languages to learn, usually based on popularity ranking. As is expected, the popularity of a programming language varies over time and hence a language that was in demand a few years ago […]

Continue Reading

std::array vs. std::vector

Written by on August 9, 2022 in C++, Programming with 0 Comments
std::array vs. std::vector

One of the common questions when starting to study the container abstractions in C++20 is “Should I use std::array or std::vector?”. The correct answer is “use what is best suited for the current situation”. That is not good enough, obviously. In this short article, I will try to answer this question based on the intrinsic nature […]

Continue Reading

Understanding std::span

Written by on July 27, 2022 in C++, Programming with 0 Comments
Understanding std::span

Introduced in C++20, std::span is a light-weight abstraction that provides a convenient view into a collection of contiguous elements. Note that it is not enough for the elements to be logically contiguous, but they must be contiguous in memory too. Thus, span will work with C-style arrays, C++ vectors and arrays. It will obviously not work with […]

Continue Reading

C++20 [[no_unique_address]] Attribute

Written by on June 26, 2022 in C++, Programming with 0 Comments
C++20 [[no_unique_address]] Attribute

The [[no_unique_address]] attribute was introduced in C++20 to give a compiler the freedom to optimise memory allocation of a struct/class when it contains a subobject that does not have any members. The other requirement is that the subobject should not be a static member of the enclosing struct/class. Let us start with the basics first. […]

Continue Reading

Top