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

Discussion in 'Java' started by Andy Fish, Apr 29, 2004.

  1. Andy Fish

    Andy Fish Guest

    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
     
    Andy Fish, Apr 29, 2004
    #1
    1. Advertising

  2. Andy Fish wrote:

    > ... 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!
     
    Jonathan Allan, Apr 29, 2004
    #2
    1. Advertising

  3. In article <lK2kc.5101$>,
    Andy Fish <> wrote:
    >
    >On the whole, we have made massive progress


    Have you done any maintenance programming recently?

    --bks
     
    Bradley K. Sherman, Apr 29, 2004
    #3
  4. In article <>,
    Jonathan Allan <> wrote:
    >Andy Fish wrote:
    >
    >> ... 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).


    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
     
    Bradley K. Sherman, Apr 29, 2004
    #4
  5. "Andy Fish" <> wrote in message
    news:lK2kc.5101$...
    > 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
     
    Richard Riehle, Apr 29, 2004
    #5
  6. 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
     
    Dimitri Maziuk, Apr 29, 2004
    #6
  7. Andy Fish

    Andy Fish Guest


    >
    > 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
     
    Andy Fish, Apr 29, 2004
    #7
  8. Bradley K. Sherman wrote:

    > In article <>,
    > Jonathan Allan <> wrote:
    >
    >>Andy Fish wrote:
    >>
    >>
    >>>... 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).
    >>

    >
    > 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!
     
    Jonathan Allan, Apr 29, 2004
    #8
  9. Andy Fish

    Josef Garvi Guest

    Andy Fish wrote:
    >
    > 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
     
    Josef Garvi, Apr 29, 2004
    #9
  10. Andy Fish

    Peter Ammon Guest

    Andy Fish wrote:

    > 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.

    [...]
    >
    > 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
     
    Peter Ammon, Apr 29, 2004
    #10
  11. Andy Fish

    Roedy Green Guest

    On Thu, 29 Apr 2004 12:48:15 -0500, Jonathan Allan
    <> wrote or quoted :

    >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.
    --
    Canadian Mind Products, Roedy Green.
    Coaching, problem solving, economical contract programming.
    See http://mindprod.com/jgloss/jgloss.html for The Java Glossary.
     
    Roedy Green, Apr 29, 2004
    #11
  12. Andy Fish

    Roedy Green Guest

    On 29 Apr 2004 08:17:06 -0400, (Bradley K. Sherman)
    wrote or quoted :

    >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.






    --
    Canadian Mind Products, Roedy Green.
    Coaching, problem solving, economical contract programming.
    See http://mindprod.com/jgloss/jgloss.html for The Java Glossary.
     
    Roedy Green, Apr 29, 2004
    #12
  13. > 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
     
    Victor B. Putz, Apr 29, 2004
    #13
  14. Andy Fish

    Roedy Green Guest

    On Thu, 29 Apr 2004 12:14:29 -0700, Peter Ammon
    <> wrote or quoted :

    >
    >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

    --
    Canadian Mind Products, Roedy Green.
    Coaching, problem solving, economical contract programming.
    See http://mindprod.com/jgloss/jgloss.html for The Java Glossary.
     
    Roedy Green, Apr 29, 2004
    #14
  15. Andy Fish

    Eric Sosman Guest

    Roedy Green wrote:
    > [...]
    > 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 ...

    --
     
    Eric Sosman, Apr 29, 2004
    #15
  16. 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
    --
    http://www.EventHelix.com/EventStudio
    EventStudio 2.0 - System Architecture Design CASE Tool
     
    EventHelix.com, Apr 30, 2004
    #16
  17. "Victor B. Putz" <> wrote in message
    news:...
    > > Java and C# (and doubtless others) are everything a programming
    > > language/environment should always have been


    .... 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

    ..
     
    Richard Riehle, Apr 30, 2004
    #17
  18. Andy Fish

    Peter Ammon Guest

    Roedy Green wrote:
    > On Thu, 29 Apr 2004 12:14:29 -0700, Peter Ammon
    > <> wrote or quoted :
    >
    >
    >>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.

    --
    Pull out a splinter to reply.
     
    Peter Ammon, Apr 30, 2004
    #18
  19. Andy Fish

    Andy Fish Guest


    >
    > 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.
     
    Andy Fish, Apr 30, 2004
    #19
  20. Andy Fish

    David Hinkes Guest

    On Fri, 30 Apr 2004 18:49:21 +0000, Andy Fish wrote:


    > 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
     
    David Hinkes, May 1, 2004
    #20
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. =?Utf-8?B?R1A=?=
    Replies:
    6
    Views:
    4,230
    =?Utf-8?B?R1A=?=
    Dec 10, 2004
  2. Omar Khan

    C++ Programming is so much fun

    Omar Khan, Oct 31, 2005, in forum: C++
    Replies:
    8
    Views:
    377
    Josh Mcfarlane
    Oct 31, 2005
  3. lds
    Replies:
    0
    Views:
    390
  4. Steven D'Aprano
    Replies:
    0
    Views:
    116
    Steven D'Aprano
    Dec 23, 2013
  5. Replies:
    3
    Views:
    98
    Gary Herron
    Dec 23, 2013
Loading...

Share This Page