views:

322

answers:

3

I stumbled upon this 'list of programming' languages and found that popular languages like Python are not standardized? Why is that, and what does 'Standardized' mean anyway?

+2  A: 

Standardized means there exists a specification for the language (a "standard"). Java, for example, has a specification. Perl 5 does not (the source code is the "standard") but Perl 6 will.

See Is there a Python language specification?

cletus
+22  A: 

"Standardized" means that the language has a formal, approved standard, generally written by ISO or ANSI or ECMA. Many modern open-source languages, like Python, Perl, and Ruby, are not formally standardized by an external body, and instead have a de-facto standard: whatever the original working implementation does.

The benefits of standardizing a language are a) you know the language won't randomly change on you, b) if you want to write your own compiler/interpreter for the language, you have a very clear document that tells you what behavior everything should do, rather than having to test that behavior yourself in the original implementation. Because of this, standardized languages change slowly, and often have multiple major implementations.

A language doesn't really have to be standardized to be useful. Most nonstandard languages won't just make random backwards-incompatable changes for no reason (and if they do, they take ten years to decide how to *cough*Perl6*cough*), and nonstandard languages can add cool new experimental features much faster (and more portably) than standardized languages.

A few standardized languages:

  • C
  • C++
  • Common Lisp
  • Scheme (?)
  • JavaScript (ECMAScript)
  • C#

Nonstandardized languages:

  • Perl
  • Python
  • Ruby
  • PHP
  • Objective-C

A full list is on Wikipedia.

Chris Lutz
Great, informative, answer. Thanks! :)
Nimbuz
It's the only way I can fight the faster guns in this wild, wild West.
Chris Lutz
Thanks for this informative answer!
jpmelos
A great answer, my only argument would be that if a Standard is just slightly vague on a certain feature, you can guarantee that the Microsoft version will use the most obscure and unusual interpretation of said ambiguity, while every other product does something sensible.
too much php
+2  A: 

There are "standards" and there are "standards".

Most folks mostly mean that a standard is passed by a standards-writing organization: ISO, ECMA, EIA, etc. Lawyers call these De Jure Standards. There's the force of law.

Further, there are "De Facto Standards".

Some folks, also, corrupt the word by adding "Industry Standard", or "vendorname Standard". This is just meaningless marketing noise.

A De Facto Standard is something that's standardized in practice (because everyone does it and agrees they're doing it that way) but it is not backed by some standards organization.

Python has a De Facto Standard, not a De Jure Standard.

S.Lott