[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

OT programming languages/ systems for advanced applications on Linux



Someone wrote:
I am like you and wrote most of my C++ during the
early years of the language.  I used the AT&T Cfront version 1.2
compiler for years.  Always on Unix machines and never on Windows.

I have become disillusioned with the new C++ that has the kitchen sink
in it.  It has become the new ADA.  I believe it makes easy programs
easy and hard programs harder.  So now I program in C and haven't
written much C++ in years.

I learned Perl in 1998, and have been using it as my primary programming language/ system since ~2001. Easy stuff is easy, and I can manage moderate stuff. Brilliant/ workaholic people can make Perl do anything, but I'm not there. The core language and library are outstanding for a non-corporate, non-standards body product. But the rest of the library (CPAN) is a volunteer community effort. Scope and quality of individual CPAN modules range from good to garbage. And, as they say, "a programming language is only as good as its library". The stream of available books has fallen off, although a new Camel book is due shortly.


Perl's motto "There's more than one way to do it" (TIMTOWTDI) is great for "duct tape that holds the Internet together". But the dark side of TIMTOWTDI is that effort grows exponentially as you cobble together Perl modules with differing designs and interfaces. "Conceptual integrity" and "systems programming product" appear to be precluded (ref. Brooks, "The Mythical Man-Month").


I've come to the conclusion that I need another language/ system for advanced applications; one that meets Brook's ideals. So, I periodically consider other languages/ systems.


I learned C++ in 1995 and used it professionally until ~2000. While I loved C, I have mixed memories of C++. I have positive memories of STL and mixed memories of Rational Rose. Boost seems to be upcoming and C++ is fully supported by Umbrello. C and C++ seem to occupy significant positions in the Linux ecosystem, and are broadly supported on many platforms.


Java is a corporate product, and doesn't feel truly FOSS (especially since Oracle). I am leery about its apparent requirement for IDE's -- I prefer the understanding and control afforded by the shell. And, I've heard one too many Java factory-factory-factory-factory jokes.


C# by itself looks appealing, but C#/.NET is corporate and and I can't stand Windows or the Microsoft ecosystem. Mono seems to be doomed to playing catch-up. I'd rather invest my efforts into a FOSS language/ system that has first-class support on all the common platforms and the possibility for embedded systems.


Python has been upcoming for years. Python's "Benevolent Dictator for Life" and "there should be one -- and preferably only one -- obvious way to do it" philosophies would seem more likely to achieve Brook's ideals. But, Python's whitespace sensitivity has always put me off, and the version 2 => 3 language change still seems to be propagating through the standard library.


Go is intriguing. It's corporate, but feels FOSS. The designers appear to have very specific goals in mind (e.g. conceptual integrity). The language incorporates many desirable advanced features, while eschewing certain others commonly found in other languages. Code is compact and regular. Go compiles and runs fast, and is being used "for real stuff". But, the language is still evolving (version 1 due next year?), documentation is terse, and the library has limited breadth and depth. I'm still hoping/ waiting for Google to "pull the cork out" and develop Go to its full potential.


Any other comments/ suggestions regarding programming languages/ systems for advanced applications on Linux?


David


Reply to: