DEV Community

Discussion on: What is a Programming Language?

Collapse
 
cout970 profile image
cout970

This article really makes you think. In my opinion, what we are trying to do it's separate languages into 2 categories:

  • What people call programming languages: a set of instructions that a computer can run.
  • What we call markup languages or storage formats: a way to represent data that can be interpreted by a program.

It's hard to classify languages, but I think that there are a few requisites for a language to be considered a programming language:

  • It must be Turing complete.
  • It should allow to transform data, a.k.a do computations.
  • Allow abstraction (functions. methods, lambdas, subroutines, subqueries, etc.)

With this criteria we can say that HTML is not a programming language. HTML is not Turing complete, it doesn't have the ability to make decisions. HTML cannot do computations, it just stores constants. And finally lacks a mechanism to do abstractions.

I may be wrong but this is my way to differentiate programming languages from other kinds of languages. I would love to hear some counterexamples if someone wants to prove me wrong.

Nice article btw.

Collapse
 
renegadecoder94 profile image
Jeremy Grifski

Honestly, I don’t know that I agree, but I like that you lay out some criteria in the same way that I did.

Currently, I don’t feel like there is a set of checkboxes that can be used to decide what is and isn’t a programming language. As a result, I choose to leave things more nebulous. In other words, if a machine can derive meaning from some data, that data is a programming language.

That said, I think you raise a good question. What does it mean to program? If flow control (or Turing completeness) is the criteria you use, then you can start to draw some lines.

Ultimately, I guess my issue with these arbitrary distinctions is that they can be used to marginalize people (not just languages). In other words, suddenly engineers aren’t real programmers because they use a language that isn’t general purpose.