I’m an old-timer [retiree], with experience in 1960 (IBM 650 with rotating drum storage!) and all kinds of math-based computer dreaming before that. I bought my first “personal computer” in 1980 and have owned about a dozen since then. I have also used various computer programming languages. I’ve taught (to college students) Pascal, 6502 Assembly language, many flavors of BASIC, most of the Microsoft Office Applications. I’ve taught Computer Science courses for business students (and other classes as well) with a Microsoft emphasis. For the last 2 years, I have gotten my feet wet and been won over to opensource and the Linux world. In contrast to one of my local face-to-face friends (who favors Ubuntu), I have been impressed with the openSUSE community habitat (with special appreciation to olcpu and his helpful comrades). I have been breaking into perl for attempting to make some of my own personal computer work in Linux more efficient by trying to use it as a kind of “super macro” language. But that’s kind of a selfish urge. I’m wondering out loud with a general question for you-all.
What do you think will be the premier “language of the future” for openSUSE Linux developement? Which language environment do you think will “win”? If you were to encourage me to use my modest talents to thoroughly learn and develop only one way toward Linux improvement, what language would you recommend? I look forward to your lively discussions and spirited defense of your various recommendations!
“Linux” development would technically mean the kernel, which is written in
C and that is not likely to change in the foreseeable future. For the
rest of any old distribution C is very common and the basis of most
commands. With that said, it’s also one of my least-favorite languages
(lack of experience, my own fault) and I prefer things like Perl. I also
use PHP for web things (researching Python casually now too because of the
Django project which is pretty neat) and I use Java for GUI-ish things.
So, which one will win? We will win because of variety. What you end up
using for your own project doesn’t matter much language-wise as long as
you use what is best for the job. For example, don’t use C to write a new
web application for dishing out customized HTML pages since a LAMP stack
will get you where you need in five minutes (vs. five months) and is
significantly more tested than anything you write on your own. This means
you need to learn one language (PHP, maybe some SQL) and even then a lot
of the work may be done for you using an existing framework.
If you’re writing something for users perhaps use Java or something else
cross-platform so you do not need to rewrite it for a bunch of platforms.
Anyway, languages are tools. Use the one that fits what you are up to.
Good luck.
On 03/02/2010 01:26 AM, 3bitsShortOfaByte wrote:
>
> Greetings programmers,
>
> I’m an old-timer [retiree], with experience in 1960 (IBM 650 with
> rotating drum storage!) and all kinds of math-based computer dreaming
> before that. I bought my first “personal computer” in 1980 and have
> owned about a dozen since then. I have also used various computer
> programming languages. I’ve taught (to college students) Pascal, 6502
> Assembly language, many flavors of BASIC, most of the Microsoft Office
> Applications. I’ve taught Computer Science courses for business students
> (and other classes as well) with a Microsoft emphasis. For the last 2
> years, I have gotten my feet wet and been won over to opensource and the
> Linux world. In contrast to one of my local face-to-face friends (who
> favors Ubuntu), I have been impressed with the openSUSE community
> habitat (with special appreciation to olcpu and his helpful comrades). I
> have been breaking into perl for attempting to make some of my own
> personal computer work in Linux more efficient by trying to use it as a
> kind of “super macro” language. But that’s kind of a selfish urge. I’m
> wondering out loud with a general question for you-all.
>
> What do you think will be the premier “language of the future” for
> openSUSE Linux developement? Which language environment do you think
> will “win”? If you were to encourage me to use my modest talents to
> thoroughly learn and develop only one way toward Linux improvement, what
> language would you recommend? I look forward to your lively discussions
> and spirited defense of your various recommendations!
>
> Thank you!
>
>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.12 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
I thank you, ab@novell, for your insights. I have about 10 C and C++ books in which I have dabbled slghtly. I came across LAMP in a Linux magazine (I buy perhaps a dozen off the news stands each year) and I have resources to study Java, if that’s a majority recommendation. The new issue bookstores are well stocked with Ruby texts, but I haven’t invested in any of them, yet.
All depends on what you want for yourself. I can imagine you want to share your experience and knowledge to start developping linux itself, your choice might also be to develop desktop apps.
I suggest you also consider Qt, Kdevelop, qt-creator. These will at least give you some idea about how development of KDE is done, how different programming languages are “connected” in a single app.
VB 6 is poo… and won’t work on *nix unless it somehow works in wine.
It was the first “language” I learned and once I learned my second and
third I never looked back. It’s biggest perk was drag/drop programming,
but lacking any real power and portability I haven’t had a need for it
since learning any number of other languages.
Good luck.
On 03/02/2010 02:46 AM, 3bitsShortOfaByte wrote:
>
> Thank you palladium,
>
> I’m competent in VB 6.0. That’s my favorite programming tool at the
> moment. Is that easily transportable for additions to the Linux kernal?
>
>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.12 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
Thanks for your good humor. Excuse me for being slow to realize it. I am now chuckling at my own dimwittedness (and, as before, looking to other language choices).
The task to do dictates the choice of languages to use. And we have no clue what your programming task would be.
There will be an ever growing number of languages, most of them with strengths and weaknesses. “One size fits all” is not true. There will never be one prevailing big unified computer language.
For the time and the forseeable future, if you want to do systems programming around the kernel, it will be C. Quick and dirty hacks can be done with a bash script most of the time and for string handling there is perl (which you already know).
> What do you think will be the premier “language of the future” for
> openSUSE Linux developement? Which language environment do you think
> will “win”? If you were to encourage me to use my modest talents to
> thoroughly learn and develop only one way toward Linux improvement,
> what language would you recommend? I look forward to your lively
> discussions and spirited defense of your various recommendations!
>
> Thank you!
>
>
As others have pointed out, if you want to work on the Linux kernel,
it’s C, no other choice.
On the other hand if you want to write applications to run on Linux,
there is a wide range of possibilities. Learn a lot, and pick what fits
a given task.
Before you spend a lot of time on PERL, have a look at TCL/TK; this
fills the same kind of role, and for my taste is a simpler and more
elegant language. It will enable you to create cross-platform gui
applications with remarkably little hassle, compared, e.g. to Java.
Ian
–
*********** To reply by e-mail, make w single in address **************
Systems programming: C
System administration: Bash, perl, python
Application: perl, python, C
Web: perl, php, ruby, python
Hot language of the day: probably python
I actually saw someone on another forum ask about Cobol
As everyone has mentioned, C is the way to go for Linux development.
However, your own projects are another story and, as you seem to have
some of experience with C/C++, Java would be fairly easy to learn, you
might like to try Netbeans which has a GUI builder which I assume would
be a familiar way of working as you are from a VB (drag and drop)
background.
Also I would strongly recommend learning some shell scripting (including
Bash and AWK), which can be the fastest way to achieve small tasks.
to you and ab@Novel, For quick, app (not kernel) development I would suggest a good look at xBasic. Code written is directly portable to both windows and Linux. It has
the nice drag n drop feel of VB,
easier to use structure,
has 1 source code per project compiled by 1 ide for windows and 1 ide for Linux,
is full gpl’d compliant,
incorporates the ability to use basic, C, Assembly libraries and
produces clean tight assembly code with important embeded notations
does not require code rewrites every time the kernel or C or Distribution code changes because it doesn’t rely on all these variable factors
Code runs on all Linux versions without mods
Code runs on all Windows versions without much change
The down side, it doesn’t see much new development, lacks some web based and network based features, is based upon old glibc stuff.
If you want fast code of local stuff, If you want tight code that’s easy to test, If you want stable development, and it can make libraries or additional libraries which can be called by ‘C’ ‘C++’ Assembly, PERL, the list goes on…
just MHO, I don’t like spending months developing for distro x and 5 days afterward some **** releases new beta kernel or new C library set, or new distro version and my new app get tanked till I can rebuild it with lots of mods! That’s why I stick to Assembly #1 and xBasic #2.
Sharing your wisdom and your experience has been a great gift to me. This is much valuable food for thought and action. Your opinions mean a lot to me and surely for future readers as well
I wonder about C++ not being mentioned for application development. KDE + C++ is a very powerful combination. If you want something powerful but easier to learn there’s Lazarus + FreePascal too.
Even in webdevelopment C++ is used quite frequently (but less than Java/PHP/Python).
Python for application development (like any other scripting language) is some kind of limited because of the very high performance-impact. There are some very good Python-apps out there, but your application will have an out-of-the-box disadvantage. But it’s easy to learn and can be very productive to write in.
For systems programming in Linux there’s eventually not much to choose: C.
Depends on your app. For apps that interact with humans, it matters little that the language is interpreted. And anyway the innards are in native code using bindings to C libraries. And if you count web apps then certainly a lot is done in PHP, Perl, Python, Ruby, etc.
Depends on what you mean by systems programming. Outside of the kernel and libraries, a lot of useful apps are written in Perl, Python, Ruby, Java, etc.
As for performance, Java can approach C in performance due to modern techniques such as JIT. The downsides of Java are the large environment it drags along into it, and the horrible bureaucracy of the language and the documentation.
No, I exluded webapps. Python is great for most of those (I heard so, have never done serious webdevelopment). I focused on GUI-apps in my comment. Of course, it depends on the app, that’s what I meant with limited. It’s not useless and for some applications quite a good choice. But many GUI-apps have to do some more or less extensive calculations the user have to wait for. And be it less than a second, if it isn’t “instant/realtime” for the user, the more time it takes, the worse it is. They often also have background-services running and a decent amount of data to store on your memory.
Also think about older/weaker hardware where your application eventually is meant to be used on.
The kernel, it’s modules and drivers are written in C, as well as most parts of basic userland. You can write system software in the mentioned languages, but without C you cannot dive into “Linux itself”.
According to benchmarks like Computer Language Benchmarks Game and contests like Sphere Online Judge (SPOJ) Java technology is still behind the “top” and memory usage is usually a big problem too. But benchmarks are just an idea about real world-applications behavior of course.
I just thought it would be good to throw in two additional programming languages which can be called “all-purpose”. C++ (and Pascal in it’s different dialects) can be used from very small scale and low level problems (a few hundret bytes of code in a kilohertz clocked microcontroller) up to bigger and high-level problems like applications. Of course, I would not use those for basic scripts.
Very few of the GUI apps are that computationally intensive. The ones that are process media, such as images, sound or video. That part of the app can be and generally is written in C. Scripting languages are often used to implement the GUI and/or extend the app. Just look at GIMP, Amarok, and yes even Firefox, which uses Javascript to implement a lot of the UI.
The kernel, it’s modules and drivers are written in C, as well as most parts of basic userland. You can write system software in the mentioned languages, but without C you cannot dive into “Linux itself”.
Very few people need to dive into Linux itself, unless you are writing device drivers and that sort of thing. There are bindings to the system libraries for various languages. Of course, it is still necessary to know C syntax and semantics to understand how to use the libraries.
For a lot of system apps, the choice is not whether to use C or to use a higher level language. The choice is to either to not have the application finished and maintainable in a reasonable amount of time, or to have something that works, even though it may not be as efficient as wished.
It may offend purists, but machine code efficiency is not everything. Programmer effort, ease of modification, and freedom from pointer and heap memory management bugs are also important considerations.
Even if you expect that you will need to make the app efficient, it’s often worthwhile building a version in a higher level language first to see how the design pans out and where to concentrate the effort before rewriting critical parts in C/C++.