Re: Important features not highlighted on main page

new topic     » goto parent     » topic index » view thread      » older message » newer message
_tom said...

If I grab ideas from Pete I end up with:
while I was at it I classified all other languages . . .

Gets my vote.

I had to look up "ornery" - can I suggest replacing it with "cantankerous"?
Could not resist making a few other tweaks, feel free to take or leave them:


Trying to find the ideal programming language, one that suits you and is a joy to use, can sometimes feel like an impossible or never-ending task.

Computer languages are a convenience invented to deal with cantankerous intractable computers. You can make a language "easy" in various ways.
There is no point in arguing about the superiority of one language over another because you must deal with cantankerous intractable programmers.
That is why there are thousands of programming languages available (eg http://rosettacode.org/wiki/Category:Programming_Languages).

One possibly way to classify them might be as follows:

A hardware language "starts with 0 and 1 bits and then builds an interface to humans." Examples include C, C++, C#, Java. Symptoms of a hardware language are:

A hardware language is convenient if your primary focus is accessing the computer internals.

A shortcut language "introduces clever tricks to make programming easier." Examples include Perl, PHP, Python, Ruby, Tcl. The symptoms of a shortcut language are:

  • variables are often not declared (simple typos raise no error)
  • duck-typing; data-type changes with value (no alerts when street_name gets set to 37.8)
  • operators and functions do different things depending on data values
  • each shortcut means a new set of rules to memorize and use
  • overall design is not coherent, but the shortcuts are great
  • sometimes extra shortcuts are invented to make other shortcuts practical
  • usually interpreted-only

A shortcut language is convenient if you already think like the language designer (or take the effort to learn to think like they do).

A rational language "is based on an academic principle." Examples include Lisp, Prolog, Racket, Scheme. The symptoms of a rational language are:

  • mathematical basis (functional language)
  • structural basis (list processing language)
  • declarative basis (logic programming language)
  • central feature: pattern matching or logic processing
  • usually interpreted-only

A rational language is convenient if you have exotic or special problems to solve (it also helps to have a PhD hanging on the wall).

A euphoric language "is based on simple consistent design." The symptoms of a euphoric language are:

  • simple is better
  • very few fundamental data-types, just enough to aid development
  • safety, pointer, memory, and garbage issues are handled for you
  • no surprises, coherent design and performance
  • helpful bug reporting
  • readable
  • maintainable
  • interpreted and compiled

A euphoric language is convenient if you want to focus on solving the problem, rather than solving the solution.

Euphoria is proven

  • Euphoria since 1993 by Robert Craig (no longer maintained)
  • OpenEuphoria is open source and free
  • Phix is a hybrid interpreter/compiler (more actively developed than OpenEuphoria but lags in some areas, especially linux)

Euphoria is programmer friendly

  • solve your problem rather than solve the solution
  • data-types and user defined types aid development
  • automatic and efficient memory management
  • run-time checks for uninitialized variables and safe execution
  • index checks are always done, and start from one
  • maintainable with lucid bug reporting
  • faster than most popular languages

Euphoria is flexible

  • multiplatform Windows and Unix (Linux, BSD, OSX)
  • interpreted for quick development
  • compiled for distributing applications

I removed "often OOP (Object Oriented Programming) features are included" since it belongs in more than one of the above categories, plus it is hardly a strong selling point, these days, that Phix/OpenEuphoria go against that grain.

I might (perhaps foolishly) say something like:
The author of Phix believes that OOP (Object Oriented Programming) is just another "reasonable paradigm" in much the same vein as imperative programming, functional programming, or declarative programming. However he also believes that there is a widespread misconception that polymorphism and encapsulation can only be provided through OOP, and that the other main tenet of OOP, being inheritance, is now widely discredited ("favour composition over inheritance"), and that despite cries to the contrary there is simply no proof that OOP /actually/ improves productivity. It also deeply conflicts with YAGNI ("You ain't gonna need it"). As such, the extra pain (boilerplate and cognitive readjustment) is simply not justified, at least in his arrogant opinion.

That said, there are several third party components readily available to permit OOP-style programming.

(I am also considering adding a cut-down version of diamond to the official Phix distro, perhaps with some (wholly optional) syntactic sugar, but I am rather busy with other things right now - like writing this!)

Guess I should get back to doing something actually useful.

Pete

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu