Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

The day computers died

  1. Apr 28, 2005 #1
    They say that to understand the history of something, you can't be too close to the events. So I am referring to something that happened about 20 years ago, namely when pascal and turbo pascal started to become popular and started to substitute basic as the programming language for home/PC computers. That is the day computers died. Pascal was the next "big thing" and cool and also "harder" so it started to pick up. Basic slowly started to become out of style. But the question I asked then and I still ask today is "why say an old thing in a new way ?" I also guess that is when programmers started running out of ideas. When you run out of new ideas invent a new programming lanuguage.

    I started programming microprocessors in summer 1978 using the SCAMP National semiconductors development kit in machine language (aka load accumulator with 0 was C4, 00). Then I learned basic and used it until about 1988. I then went down the road of learning all the sequence of languages: turbo pascal; turbo C; unix systems ksh; awk; perl; javascript; visual basic; java; c++; delphi; php; python.
    After all these years I have come to the conclusion that we would have been all better off just sticking to basic and maybe improving it's compiler and creating a possibly huge library of reusable programs and modules. If all those man years used for just "java" would have been used to really program, we would be light years ahead of where we are now.

    Do you want an example ? Try to write this simple basic program in Java:

    FOR i = 1 TO 5
    a$ = ""
    WHILE a$ = "": a$ = INKEY$: WEND
    PRINT a$
    IF a$ = "w" THEN SOUND 150, 2
    IF a$ = "z" THEN SOUND 550, 2
    NEXT

    Hey don't forget we are in the year 2005 and we have all the great Object oriented java crap available!
     
  2. jcsd
  3. Apr 28, 2005 #2

    DaveC426913

    User Avatar
    Gold Member

    Great. And that piece of code will power our nuclear generators?

    What? You'll need to write something more complex? Wait, maybe more sophisticated functions than keyboard beepers might require a more sophisticated language. Try programming an autopilot for a commerical airliner using Basic. Don't forget, it's real time, and zero fault tolerance.



    Or, you could have a keyboard beeper be the highlight of your personal computing world...
     
  4. Apr 28, 2005 #3
    Also, any good programmer has a large toolkit of languages, technologies, and skills. You use the one that is best for each situation, and many complex situations require you to use more than one on a given problem.

    The mere fact that standard Basic doesn't have subroutines should be enough to falsify your position.
     
  5. Apr 28, 2005 #4
    In 1985 we already had a set of excellent high powered languages for finance and industrial use. Those languages were and still are:

    1) COBOL
    2) FORTRAN
    3) ADA
    4) PL/1
    5) C
    6) ASSEMBLY

    Now what I think is that we really didn't need to go on and develop C++, Java and others. Maybe the best of the more recent is perl. Javascript could have been made very similar to basic. Windows itself was mostly created with a slightly modified C language. If all the effort for java and object oriented programming was dedicated to perfecting basic and the various compilers of the above languages, maybe we would be much more ahead by now. It just intrigues me to see how much money was dedicated to java when we mostly had everything already.
     
  6. Apr 28, 2005 #5

    graphic7

    User Avatar
    Gold Member

    You're missing a point. Java is portable. So is BASIC, but Java is also compiled bytecode, therefore, much, much faster. Where you see Java's beauty (as was in my case) is when you're working on, say 5 different platforms. You quickly see how much of a pain C becomes (type conversions). With Java, that's all standardized on every platform to some extent, but much moreso than C.

    There's really no way to see how nice object orientation is until you're writing a huge program with lots of functions. It becomes a lot more easier to understand, and thus, easier on the eyes.

    I'd also like to see someone debug 10,000 lines of BASIC code *cringes*. I can hear it now, "Boys, looks like that line 701 is getting us. What is it? It's a GOTO statement boss. Oh, well, where does it go to?." Talk about iteration..
     
    Last edited: Apr 28, 2005
  7. Apr 28, 2005 #6
    Didn't need perl?

    You've never tried shift through 5000 text files of data each roughly 50 pages long, have you?
     
  8. Apr 28, 2005 #7
    Do you actually have any useful ideas for how to perfect those tools, or are you just complaining because the computer industry is moving on from tools you know how to use and you're unable to adapt to change?

    Your complaint isn't that uncommon; it is something of a waste that so many new programming languages are developed all the time. But the problem is that most of the time the new languages are just half-assed reimplementations of ideas that have already been done a million times over.

    But that doesn't apply in your case. Most of the languages you seem to idolize, just plain suck. They're missing a lot of modern features that enable a competent programmer to write programs with much less effort. They were designed for a time when programmer time was cheaper than computer time. And they were designed at a time when we knew much less about how to build good languages.

    Not that we should completely ignore the past; assembly language, fortran and C still have their uses. But there's only so much we can do with those languages. Pumping more money and time into these languages isn't going to be able to produce a dramatic improvement to them.
     
  9. Apr 29, 2005 #8
    You just substituted the "native compiler" with "jvm machines" which are different for every platform. There is really nothing standard about having to install a different jvm for every platform. Why not just install a different native compiler for a single lanuguage ?

    Why always change the "way you say the same thing ?" . Why introduce yet another java like language like "C sharp" ? Because it is a "market" thing. Companies like to own languages and then shove it down everyones throat. People like complicated languages and then a whole new host of services for a new language bring about other activity. It is really mostly a social-economical choice and not at all a technical choice.

    An artificial intelligence researcher once said that you could study a field in AI for all your life and then after many years realize that your approach was completely wrong. Something like this is happening in IT.
     
  10. Apr 29, 2005 #9

    graphic7

    User Avatar
    Gold Member

    That still wouldn't get rid of type conversions now would it?
     
  11. Apr 29, 2005 #10
    I wouldn't be so sure. Who would of thought that a unix dialect (namely linux) would have become the greate NEW operating system of the year 2000s back in 1985 ? Aside from the fact that Basic is still around in alot of variants, I wouldn't be suprised if in 10, 20 years after going insane after Java and OO in general an LBasic (like linux basic) became the next great NEW programming language. By then we would have all learned our lessons to KEEP THINGS SIMPLE!
     
  12. Apr 29, 2005 #11
    Compiler Compatibility...


    How exacly did Java solve the problem with type conversions?
     
    Last edited: Apr 29, 2005
  13. Apr 29, 2005 #12
    Why didn't that happen to unix ? Why after 35 years we still have unix and shell as linux ? This goes to show that not necessarily you must invent "new" languages. Hell, it didn't happen with operating systems ........
     
  14. Apr 29, 2005 #13

    graphic7

    User Avatar
    Gold Member

    Type conversions on Java are standardized across all the platforms. Langauges like C and C++ let the compiler specify the size of an int, for instance, where as Java specifies all that. I know I can take an application that I've written in Linux/Windows/Solaris and take it over to my Octane that runs IRIX, and I'll get the same data output.

    With a language like C, I'd have to have a configure script/ifdefs that would automatically do the type conversions based on the compiler's specifications, and then do a seperate build for each platform that I'm working with. This isn't hard or anything, really, but it's a step that I don't have to take with Java.

    Are you saying Linux is a shell? You're contradicting yourself, also. A few posts up you were downing on Windows (coded in C++), now you're saying that none of the operating systems available today are bloated, (insert derogatory word here), etc. ?
     
    Last edited: Apr 29, 2005
  15. Apr 29, 2005 #14
    Whatever. It won't change at least not in this era. What I wanted to say is "idealistically" if back in 1985 people decided to improve basic and it's compilers, add some extensions etc and concentrate on a top notch library of functions, problems and solutions MAYBE we would be better off today. I don't know.

    Software gets more and more bloated. Java to me seems really quite complex for most applications. Maybe applications should be made from a group of simple modules but not with all the OO overhead and fluff. A simlpe top notch BASIC module could easily do, and then string a few thousand of them together. I don't know. I know that IT isn't going to improve if it continues on this track.

    Java has always seemed more like an extreme exercise in syntax and fluff more than anything else. And C++ was already THERE. WHY INVENT JAVA IF WE ALREADY HAD C++ THAT HAD EVERYTHING WE NEEDED? I don't know. I may even be dead wrong.
     
  16. Apr 29, 2005 #15
    Compiler Competition...



    I started with the Basic source code sample, then translated it into a MSVB source code variant, then translated it with a MSVB to Java convertor and produced the following results:

    MSVB source code variant:
    Code (Text):

    Private Sub Option1_KeyPress(KeyAscii As Integer)

    Cls
    For I = 1 To 5
    A$ = ""
    A$ = Chr(KeyAscii)
    Print A$
    If A$ = "w" Then Beep
    If A$ = "z" Then Beep
    Next I

    End Sub
     
    MSVB source code to Java source code convertor results:
    Code (Text):

    import java.awt.*;
    import java.util.*;
    import java.applet.Applet;
    import java.net.*;

    public class Form1 extends Applet {
      CheckboxGroup group = new CheckboxGroup(); //used or reserved for radio buttons
      Checkbox Option1 = new Checkbox( "Option1", group, false);


      float d_x;
      float d_y;
      protected void addPosition( Component c,
        int x,
        int y,
        int width,
        int height ){
        add(c);
        x= (int)(x * d_x);
        y= (int)(y * d_y);
        width =  (int)(width  * d_x);
        height = (int)(height * d_y);
        c.reshape(x,y, width, height);
      } //end addPosition

      public void init() {
        setLayout(null);
        addNotify();
        setFont(new Font ("Dialog", Font.PLAIN, 8));
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
        d_x = (float)(d.width) / 800;
        d_y = (float)(d.height)/ 600;
        resize ((int)(0 * d_x), (int)(0 * d_y) );
        setForeground( new Color (192, 0, 192));
        setBackground( new Color (14, 0, 0));

        addPosition( Option1 , 0,0,8,12);

        Option1.setFont( new Font ( "Dialog", Font.PLAIN, 8));

      } // end init



      public void Option1_KeyPress(Object arg){  
       
          }


      public boolean action(Event evt, Object arg )  {

        return true;
      } // end action

       public boolean handleEvent(Event evt) {
         if (evt.id == Event.WINDOW_DESTROY ) {
           this.hide();
           System.exit(0);
           //  Remove System.exit(0); from all but the base window
           return false;
         };
        if (evt.target == Option1 && evt.id == Event.KEY_PRESS) {
            Option1_KeyPress(evt);
        }
        return super.handleEvent(evt);
      }  // end handle event


    }   //end class
     
    If anyone has a good Java compiler, and is willing to compile this source code, it would be interesting to examine how close these two compilers really are.

     
    Last edited: Apr 29, 2005
  17. Apr 29, 2005 #16

    graphic7

    User Avatar
    Gold Member

    I'm assuming your Java skills are weak at most. You've obviously never done anything with Java that would include Swing and SWT. Once you try to write an app that makes use of one of them, attempt to do the same with C and GTK+ for instance, then you can tell me Java is a complicated language.

    Better yet, I'd like to see you write a graphical Cobol app, or a graphical Pascal app? Object orientation makes GUI programming so much easier. I suppose your next defense will be that we should all be on WYSE terminals. In that case, feel free to exit out of your graphical web browser and head on over to http://lynx.browser.org/ .
     
    Last edited: Apr 29, 2005
  18. Apr 29, 2005 #17
    I would choose Delphi or C++ builder for windows programs where you get that very good GUI builder where you just drag and drop and code the events. As an equally good choice I would choose Visual Basic which is just as easy.

    I did some experiments with AWT when it came out a few years ago and it sucked. I did some experiments with Swing recently but there are always some widgets missing or something else that has to configured or installed etc. By the way I tried to find a good GUI builder for Java, but didn't find a relatively small (not 100 MB, possibly free) one, any suggestions ?

    Anyways windows GUI programs are much better off done with Borlands products or Visual Basic. Orion, where does your java program do the SOUND freq, duration instruction ? I think that will be hard in Java.....
     
    Last edited: Apr 29, 2005
  19. Apr 29, 2005 #18

    chroot

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    The reason there are many languages is because there are many kinds of problems. Let's see... what are some drawbacks of Basic?

    1) It is interpreted. In other words, it's slow.
    2) It has no built in string-manipulation operations.
    3) It has no built-in associative array, making data structures difficult.
    4) It has a poorly-developed subroutine model.
    5) It lacks object-orientation, and thus does not support patterns.

    Your Basic keyboard beeper program is certainly small -- but does that mean that Basic is good? How about a counter-example: I'll give you a trivial program in Perl. This program reads whatever file(s) you pass it on the command-line, counts the number of times each unique line is read, and then prints out the top ten most frequent lines, in decreasing order.

    PHP:

    #!/usr/bin/perl

    while (<>) { $count{$_}++; }
    print join "", (sort { $count{$b} <=> $count{$a} } keys %count)[0..9];
     
    Go ahead, oldtobor, show us the power of Basic by writing the equivalent program.

    Also, you seem to be missing another huge part of the argument: modern programs are not designed by a single person working on a single workstation. They are designed by teams of hundreds, in some cases, all working simultaneously. Languages like Basic are incredibly hard to maintain, refactor, and modify. There are side-effects all over the place.

    I generally agree that Java is bogged down by the precision of its own syntax, but what on earth have you got against Python? Python might as well be "the next Basic." It's interpreted, runs anywhere, has loads of packages, has built-in object orientation and string manipulation features, and its syntax is even cleaner and more direct than Basic's. What's not to love?

    - Warren
     
    Last edited: Apr 29, 2005
  20. Apr 29, 2005 #19
    Yes I absolutely agree! and perl is one of the best that came out and I actually use it ALOT! I was thinking of extensions to BASIC that would have covered exactly those things like regular expressions and array handling etc.

    But you can't see in the future so in 1985 no one thought about it. Actually Python is the only language that lets you solve that sound program in a few lines (more than basic) but you have to introduce Tkinter to do it.

    Yes, I agree that in large projects things get complicated, but java seems to add complications that really don't make much sense.
     
  21. Apr 29, 2005 #20

    chroot

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    Okay, so we're basically in agreement oldtobor.

    We both agree that each language has strength and weaknesses, and that Java is, for many purposes, over-complicated.

    We also agree that Basic, in its 1985 incarnation, was woefully inadequate for a large number of problems that are better solved by more contemporary languages.

    This thread, then, is moot. Let's all just use Python, and get on with life.

    - Warren
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?



Similar Discussions: The day computers died
  1. Computer died? (Replies: 21)

  2. Is Android dying? (Replies: 8)

  3. Ivy Bridge die? (Replies: 8)

Loading...