Programming is not as much fun/more fun than it used to be.

A

Andy Fish

1. Programming is more fun than it used to be.

Java and C# (and doubtless others) are everything a programming
language/environment should always have been. No need to worry about memory
management, IDEs with auto-completion, and massive built in libraries of
data structures and support functions.

Good riddance to all of the follwing: Managing strings in and memory
allocation in C; porting C apps across unixes or to windows (all those
nested #ifdefs); 16 bit windows programming (near and far, large compact
small, and a memory manager that would allocate you a block of memory but
might move it afterwards); trying to call windows APIs from VB; dll hell;
socket programming; languages without exception handling (having to check
the return code of every function); unix interrupt handlers.


2. Programming is not as much fun as it used to be

Back in the good old days I used to spend much of my time actually
programming. Apart from databases and VBXs, software re-use was just pie in
the sky (most software projects failed and were never used at all) so
programming meant programming - and lots of it.

Nowadays I seem to spend all my time looking on the net for a component or
library that does what I want, or a standard I should adhere to; trying to
understand complicated intertwined standards and specifications and large
pieces of infrastructure and middleware, and figure out what they mean to
me; debugging and playing with all these third paty pieces to try to get
them to do what I actually want.

Even within my own code, if I want module B to do something similar to
module A it's no longer acceptable just to make a copy of A and hack away; I
have to refactor it out into subclasses.


On the whole, we have made massive progress and there is no doubt that the
software industry provides far better value for money to it's customers than
before. The holy grail of re-use is here, and standards allow systems to
interoperate to the massive benefit of all the civilised world. But
sometimes I would like to re-write one of my old completely bespoke systems
from scratch in visual C# just to get the best of both worlds
 
J

Jonathan Allan

Andy said:
... But
sometimes I would like to re-write one of my old completely bespoke systems
from scratch in visual C# just to get the best of both worlds


So the industry is finally maturing and you're pining for the "good
old days" already? ;-)

There's a difference between craftwork (which describes much of
programming, even today) and engineering (which I would assert
without proof or intent to prove, that programming is finally
starting to become). In general, the craftsperson has always
lamented the advent of the engineers. And in general, the
engineers have always managed to take the technology to places
the craftspeople would never have gone.


All in all, this is a good thing. But if you need a hobby, get

busy rewriting! ;-)

--
Jonathan Allan

Neither Mayo Clinic nor I speak for each other unless we explicitly
say so. You should assume I am speaking only for myself.
Please remove the antispam ".6809" to reply direct to me. Thanks!
 
B

Bradley K. Sherman

So the industry is finally maturing and you're pining for the "good
old days" already? ;-)

There's a difference between craftwork (which describes much of
programming, even today) and engineering (which I would assert
without proof or intent to prove, that programming is finally
starting to become).

Assertions without proof about software engineering! Who cares
about the good old days? Twas ever thus.

I'd say that programming done by hordes of mediocre programmers
working within Visual Basic and other horrible tinker-toy
environments has moved farther away from engineering. Programs
that used to run quickly in 48 kilobytes of memory with a
two megahertz CPU now run slowly in 512 megabytes of memory
with a two gigahertz CPU. Not only would the majority of
modern programmers not know how to speed up a program, their
programming environment might not even give them the tools
to do so. I'm just asserting this without proof, though.

--bks
 
R

Richard Riehle

Andy Fish said:
1. Programming is more fun than it used to be.

Java and C# (and doubtless others) are everything a programming
language/environment should always have been. No need to worry about memory
management, IDEs with auto-completion, and massive built in libraries of
data structures and support functions.

From my own view, C# has much to recommend it, but it is not ported
to enough platforms. My own preferences are Ada and Eiffel. Ada
conforms more closely to an engineering way of reasoning about software
than most alternatives. Eiffel' s assertion mechanism is more robust as a
way to ensure reliability at the contract level than any of the C family of
languages, including C# and Java.

That being said, the perfect language for software engineering does not
yet exist.
2. Programming is not as much fun as it used to be

Back in the good old days I used to spend much of my time actually
programming. Apart from databases and VBXs, software re-use was just pie in
the sky (most software projects failed and were never used at all) so
programming meant programming - and lots of it.

Nowadays I seem to spend all my time looking on the net for a component or
library that does what I want,

We have had this option with Ada for a very long time. This is nothing new.
Reuse
is a way of life for Eiffel developers. It seems that those who have been
mired
in the world of curly braces have not been adventurous enough to look
outside
to the more effective alternatives.
before. The holy grail of re-use is here, and standards allow systems to
interoperate to the massive benefit of all the civilised world.

It has been here for a long time. And there are other options besides Java
or
C# for realizing it. Granted, the Java API and libraries are a powerful and
useful feature of the language. However, the langauge itself is not
particularly
interesting and some of us find more satisfaction in alternatives that give
us
more reliability, power, and engineering foundations.

Richard Riehle
 
D

Dimitri Maziuk

Andy Fish sez:
[ snip ]
On the whole, we have made massive progress
^^^^
*You* have made massive progress. You grew up and gained a lot
of experience.

*We*, OTOH, from time to time hire CS students to write code.
And then I get to fix it. As a result, I believe that average
CS graduate is completely unaware of all those modern programming
techniques you've described.

HTH, HAND
Dima

PS. current one is coding in C++. I introduced him to vectors
after he ran into problem with double-free()'ing an array of
char* somewhere in umpteen-hundred-LOC main().
--

.... If you want to make sure you don't put a Pig in a List of airplanes and
have it fail at insertion rather than extraction, use
planelist.add((Airplane)o) instead of planelist.add(o). It's that easy.
-- Mark 'Kamikaze' Hughes
 
A

Andy Fish

We have had this option with Ada for a very long time. This is nothing new.
Reuse
is a way of life for Eiffel developers. It seems that those who have been
mired
in the world of curly braces have not been adventurous enough to look
outside
to the more effective alternatives.

I cannot claim to be up to date with eiffel or Ada, but I can't imagine that
the amount of 3rd party software around is even 1% of that available for
java.

I'm all for re-use but the point I'm making is that (in the java world at
least) the market is so full of reusable code that often one spends all ones
time evaluating different options
 
J

Jonathan Allan

Bradley said:
Assertions without proof about software engineering! Who cares
about the good old days? Twas ever thus.


I said "starting"; I didn't say it was here yet. We're still
a long way from "software ICs", but we'll get there eventually.
And it'll be the same problem that forces us in that direction:
systems needed will be too big for a single mind (or even a team
of minds) to solve repeatedly and correctly.

I'd say that programming done by hordes of mediocre programmers
working within Visual Basic and other horrible tinker-toy
environments has moved farther away from engineering. Programs
that used to run quickly in 48 kilobytes of memory with a
two megahertz CPU now run slowly in 512 megabytes of memory
with a two gigahertz CPU. Not only would the majority of
modern programmers not know how to speed up a program, their
programming environment might not even give them the tools
to do so. I'm just asserting this without proof, though.


I think we need more algorithm design in formal education
programs for precisely this reason. And the continued emphasis
on degreed individuals by employers will slowly weed out the
non-degreed (whatever their competency) due to attrition.
From there it's short hop to certifications like the PE and
RPE administered by the states in the US. IEEE has a start
on this with the CSDP. So, ultimately, the engineers will
win, over all the moaning of the craftspeople. ;-)

--
Jonathan Allan

Neither Mayo Clinic nor I speak for each other unless we explicitly
say so. You should assume I am speaking only for myself.
Please remove the antispam ".6809" to reply direct to me. Thanks!
 
J

Josef Garvi

Andy said:
I'm all for re-use but the point I'm making is that (in the java world at
least) the market is so full of reusable code that often one spends all ones
time evaluating different options

You have a point!

--
Josef Garvi

"Reversing desertification through drought tolerant trees"
http://www.eden-foundation.org/

new income - better environment - more food - less poverty
 
P

Peter Ammon

Andy said:
1. Programming is more fun than it used to be.

Java and C# (and doubtless others) are everything a programming
language/environment should always have been. No need to worry about memory
management, IDEs with auto-completion, and massive built in libraries of
data structures and support functions.

I hope we aren't satisfied just because our five year old expectations
are finally met. There's still massive room for improvement. Example:
why do I have to write so many darn loops? Generic iteration is a
problem that so far has been tackled best by generic programming
languages (like C++'s templates or the ML family) or dynamic ones (like
Smalltalk or Objective-C); both are areas mostly untapped by mainstream
programmers using Java.

Syntax sugar like Java 1.5's new looping construct, or code-generating
IDEs, are a stopgap solution, and miss the point anyways.

[...]
 
R

Roedy Green

I said "starting"; I didn't say it was here yet. We're still
a long way from "software ICs", but we'll get there eventually.
And it'll be the same problem that forces us in that direction:
systems needed will be too big for a single mind (or even a team
of minds) to solve repeatedly and correctly.

There is something philosophically interesting happening with RDF.
See http://mindprod.com/jgloss/rdf.html

Instead of trying to get everyone to accept some common standard or
vocabulary, the emphasis now is on how do you automatically merge
information from two different schemes.

Fascists think the solution is to force everyone to do things one way.
Anarchists refuse to accept any standards.

The middle ground is for pools of people to do things the same way,
and somehow merge those consistent pools AFTER THE FACT.

The basic idea is, if you have clean consistent data, no matter how it
is represented, it will be a heck of a lot easier to reuse.
 
R

Roedy Green

Have you done any maintenance programming recently?

It is a heck of a lot easier to maintain Forth/Abundance programs I
wrote back in the 80s than Java simply because when I change anything,
I have to change it in only one place. Java has SO much bubblegum you
can't encapsulate in one place.

Further there is just so much BULK. Every time I go back to a program
I have to make a detailed study the class structure again and dig
around in many places to find the code I'm after. It is like being
extremely near sighted. It is so hard to get a big picture of what is
going on just because there is so much fluff and housekeeping covering
up the business logic.

The most obvious flaw in the way business logic and display logic are
so closely interwoven. There is nothing akin to CSS style sheets to
handle your layouts. Every one is hand polished.
 
V

Victor B. Putz

Java and C# (and doubtless others) are everything a programming
language/environment should always have been

Oh my goodness no (grin). I'll fall down heavily on the side of the "doubtless
others" point of view. Java and C# are certainly interesting steps, but while
Java for example did allow me to WRITE differently (and cleared up a bunch
of crud that no developer should have to deal with, like manual memory
management--unless you want/need to), it didn't really allow me to THINK
differently. Even with the new iterative sugar--which is nice, don't get me
wrong-- there are plenty of constructs in other languages that allow you
to approach problems differently (the anonymous block-passing in Smalltalk
or Ruby, or higher-order functions like OCaml, Haskell, and any other
functional language).

Of course, those languages don't have the libraries. But comparing
equivalent programs in, eg, OCaml and Java reveals a MASSIVE difference
in terseness, and I have to agree with Paul Graham that terseness can
be a very good thing.

Roedy's observation is more interesting to me though. What's the most
important "technology" on the web? Not java, or flash, or Zope--I'd give
the nod to CGI: it's simple and straightforward (with warts), but more
importantly it allows communication. It's the interchange of information
that's important, methinks.

-->VPutz
 
R

Roedy Green

Syntax sugar like Java 1.5's new looping construct, or code-generating
IDEs, are a stopgap solution, and miss the point anyways.

I wrote a language years ago called JCLGEN that generated // JCL for
the IBM 360/370. It allowed users to feed files to various generic
utilities. By combining they could often do what they needed without a
programmer.

To my surprise, the users GOT it even before I did. Atomics in this
language were whole files. You could toss them around with the same
abandon that we programmers toss around an int or a reference to an
object. I was thinking of all the loops and processing going on
inside each utility. Users saw only a single keyword needed to invoke
a utility. They had no such inhibition. They could conceive of much
grander things to do with the tools than I.

For Java, what we need are operations on whole collections. You
should not have to write an explicit loop every time. When we get
this, I think it will revolutionise our thinking, so that we focus
more on the entire collection than the individual elements. We will
tend to think in higher level of abstraction.

I have done some work in that direction with
http://mindprod.com/products.html#SORTEDARRAYLIST
 
E

Eric Sosman

Roedy said:
[...]
For Java, what we need are operations on whole collections. You
should not have to write an explicit loop every time. When we get
this, I think it will revolutionise our thinking, so that we focus
more on the entire collection than the individual elements. We will
tend to think in higher level of abstraction.

Those who forget Lisp are condemned to re-invent it ...
 
E

EventHelix.com

Well prepare for the next round of changes. Programming is going
to become more and more declarative. As I see it there will be
two types of programmers:

- Persons that specialise in the declarative aspects of applications.
These persons will have skills in HTML/XML etc. Microsoft has something
called XAML that falls into this category.

- Conventional programming with languages like C, C++, Java, C# etc.

Sandeep
 
R

Richard Riehle

.... after commenting on several other languages,
Of course, those languages don't have the libraries. But comparing
equivalent programs in, eg, OCaml and Java reveals a MASSIVE difference
in terseness, and I have to agree with Paul Graham that terseness can
be a very good thing.

We need to be careful what we are evaluating. True, Java has a large set
of libraries. However, when evaluating a language, on its own merits, Java
does not offer much of interest beyond what some other languages offer.

Java, as a language, along with its environment, does offer quite a bit for
the contemporary developer. Even with that, the Java libraries are
accessible
from other languages such as Ada.

One of the most important properties of a language, for me, is a capability
for interfacing with source code and libraries in other languages. This is
one of the more powerful features of Ada In fact, with Ada, one
has access to the libraries for C++, MS-Windows, etc, along with
a fairly powerful set of libraries in its own source code for data
structures and algorithms.

Other languages, such as Eiffel, have some of the same capabilities.

More to the point of the original post, reuse, through genericity, has
been around for a long time, with Ada being one of the earliest
languages to include it as a language feature. Reuse through inheritance
has also been around for quite a while. And let's not forget the
contribution of generative programming, aspect-oriented programming,
and delegation as contributors to the more sophisticated models
of software reuse.

Richard Riehle

..
 
P

Peter Ammon

Roedy said:
Syntax sugar like Java 1.5's new looping construct, or code-generating
IDEs, are a stopgap solution, and miss the point anyways.
[...]

For Java, what we need are operations on whole collections. You
should not have to write an explicit loop every time. When we get
this, I think it will revolutionise our thinking, so that we focus
more on the entire collection than the individual elements. We will
tend to think in higher level of abstraction.

I have done some work in that direction with
http://mindprod.com/products.html#SORTEDARRAYLIST

Interesting stuff. The implementation I favor is Marcel Weiher's Higher
Order Messaging. It allows you to operate on collections as if they
were the type of object they contain in various ways, such as applying a
method to each one, collecting the result of applying the method in a
new collection, etc. For Objective-C or Smalltalk only at this point.

http://www.spiritshigh.com/programming/projects/hom.html

also see <http://wiki.gnustep.org/index.php/HigherOrderMessaging> for
some examples.
 
A

Andy Fish

Syntax sugar like Java 1.5's new looping construct, or code-generating
IDEs, are a stopgap solution, and miss the point anyways.
code generating IDEs are a terrible thing in my opinion.

just about the worst thing about c# is that when you define a form and plonk
some controls on it, that just generates a load of code. the form definition
should be in a resource file (and preferably read at runtime).

I think the NeXT platform got a lot of things right with its concept of
"nib" files. basically you had a resource file with the program that
contained a load of serialized objects - including visual elements but also
things like database connections and your own objects. when the app
initialised it would just deserialize them (including the pointers from one
object to another obviously) which cut down on a lot of tedious constructor
code.
 
D

David Hinkes

just about the worst thing about c# is that when you define a form and plonk
some controls on it, that just generates a load of code. the form definition
should be in a resource file (and preferably read at runtime).


Do you like libglade? A graphical program (Glade) is used to generate
forms and etc (similar Visual Studio) and an xml data file is generated.
This data file is opened at run time, and the libglade library sets up the
visual environment and signals according to the data in the file. Thus,
no code generation is used, but you get the ease of "drag-and-drop" GUI
layout.

It sounds like something you would like.

-Dave
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,734
Messages
2,569,441
Members
44,832
Latest member
GlennSmall

Latest Threads

Top