Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

(OT) Where is programming headed?

by Ovid (Cardinal)
on Dec 14, 2001 at 02:08 UTC ( [id://131789] : perlmeditation . print w/replies, xml ) Need Help??

Moderately OT and definitely not about Perl. You've been warned.

It has been over a decade since I hacked C. As a result, I don't remember any of it. Oh, I can read through C code and get a general idea and still kind of recall pointers, but that's about it. Still can't recall how to use malloc for example. So, I decided to look at a local university for C classes. They didn't appear to have any, but their online catalog is, um, less than clear about what they do have.

I went ahead and called down to the university and a receptionist thought that they offered C, but wasn't sure. She would have someone call me back. Someone did call me back and identified himself as the head of their computer science department (at least, that's what I recall from the conversation, but I could be mistaken). I was informed that not only did PSU not offer C, they would not be offering it in the future because "C is obsolete". I was informed that the world of computing is moving to Object Oriented languages and PSU will only be teaching those skills that prepare students for the future.

Since I have some friends who are college professors, I hesitate to say "Ivory Tower", but the thought does cross my mind. Claiming that "C is obsolete" ¹ and that the future belongs to OO languages strikes me as more than a little absurd.


1. Obligatory Perl reference: I guess that means Perl is written in an obsolete language, eh?

Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.

Replies are listed 'Best First'.
Re: (OT) Where is programming headed?
by Masem (Monsignor) on Dec 14, 2001 at 02:55 UTC
    I disagree that C is obsolete; look at nearly every Linux program, for example. However, because C is a subset (to some extent) of C++, if you teach your students C++, you've basically taught them C as well. So saying that you don't teach C but you do teach C++ isn't really a problem.

    However, to teach them *only* object-oriented programming is not being fair to the students. Procedural programming still has it's place (who's going to write a OOP device driver??!), and the other programming philsophies such as functional can be useful. I do agree that most Comp Sci students will be using one of C++, Java, or Vis Basic as their main programming environment, and I cannot fault the university toward teaching those languages (as thie is what the industry appears to demand), but they should at least touch on other aspects of programming, particularly for those students with higher asperations in their programming careers.

    Would this necessary mean teaching C specifically? Probably not. Continuing to think about the problem, say that I wanted to teach some alternate language or approach (say, LISP). Most likely, I'd only have a semester to do this, and while that would be enough time to teach such a language, it would not be enough to go into all the details and tricks with it. So a second semester might be needed. But then you have to consider what population of the students would take this course; only a small fraction of comp.sci. students, in my experience, would have the initiative to take such a course. Thus, it would be very likely that a course may be offered one year, but the low turnout kills it since it otherwise takes up valuable classroom space. Alternatively a course that dealt with alternative languages as a whole, and covering all the different types of programming models, would probably get more students, but there is NWIH you could teach all the tricks and details of these languages in a single semester, and I'd rather avoid teaching such a mess of a course instead of having it as separate units.

    That said, I believe that most people that are true programmers at heart are ones that can self-teach themselves nearly any language; I know I have. Yes, it's nice to have "C++/Java training" on your resume so that you can get hired, but to also be able to demonstrate that you can learn other non-standard languages on your own would be a more valuable skill, at least to me. If the company decided to try a new approach and required that a new language or similar feature set be learned from scratch, I'd rather have someone that has demonstrated the ability to quickly learn a skill on their own rather than someone that can only cookie-cut out new programs and would require training in the new language.

    Dr. Michael K. Neylon - || "You've left the lens cap of your mind on again, Pinky" - The Brain
    "I can see my house from here!"
    It's not what you know, but knowing how to find it if you don't know that's important

Re: (OT) Where is programming headed?
by AidanLee (Chaplain) on Dec 14, 2001 at 02:40 UTC

    I would actually venture to say that this is very opposite of what I would consider Ivory-Tower-think. I don't know about other schools' curricula, but at the institution I recently graduated from, there was a course called Programming Languages. The whole point of this course was to introduce us to the 6 or so major programming paradigms (Functional, Procedural, Generic, OO, Declarative(?)... ok, so it's been a few years).

    There was a little traffic on the Perl6 internals mailing list right after the Little Languages conference at MIT. While the focus was to clearly bring acadamia and real-world programming some mutual understanding, Around the edges there were brief, playfully pointed jokes mentioning ML and Scheme and the like.

    That and my experiences at my own college suggest that the University you contacted was definitely the exception, not the rule, by limiting themselves to OO languages.

      Although I have vague notions, I'm not entirely clear on all the terminology used to define different programming languages(functional, procedural, declarative, etc.).

      Does anyone know of a web site with a good, detailed breakdown/comparison of all these different programming styles/paradigms?

      Impossible Robot

        Well, pulling open the book from that course I took, they give four categories: Imperative, Functional, Logic, and Object Oriented. I know my professor threw in Generic because of she was aware of developments in that category outside of C++'s templating system. I also know of a supplemental category, Aspect Oriented Programming, which is just recently being researched.

        I find that the easiest way to get the sense of a programming category is to list examples of which languages fall where:

        Object Oriented: Smalltalk
        Functional: LISP, APL, ML, Haskell
        Logic: Prolog
        Imperative: C
        Will give you the down on Functional programming. Hope you like maths:)
Re: (OT) Where is programming headed?
by Rudif (Hermit) on Dec 14, 2001 at 03:41 UTC
    I don't know where programming is headed (Perl 6?), but I'd like to know where are you headed, w.r.t. programming languages?

    Are you trying to brush up your C out of curiosity, or a out of a practical need?

    Anyway, C is alive and well, as is it's bigger brother C++. Nowdays, programming in C instead of C++ is similar to programming in Perl without Perl's OO constructs. Anything you can do with one you can do with the other. However, if you insist on not using OO in Perl, you have to forgo many a lovingly crafted module. Similarly, if you stick to C and shy away from C++, you have to forgo a range of powerful language constructs, and ready-to-use libraries such as STL.


    P.S. The venerable K&R hello.c still compiles under a current C++ compiler (although it draws a double warning)

    #include <stdio.h> main() { printf("hello, world\n"); }
    'main' : function should return a value; 'void' return type assumed

      My reasons are fairly simple. "C" is a nice letter to have on a CV :) I know some people won't appreciate this, but I was relieved by the collapse. The market was tremendously overvalued and, like the Japanese bubble economy of the late 80s, early 90s, the bubble had to burst to start allowing the money to flow more efficiently. The downside of course, is summed up perfectly in a brilliant quote that I heard. Someone was asking why people weren't showing up to a local IT schmooze-fest and the reply was "networking with unemployed people isn't very helpful."

      While my company is still kicking along (barely), I don't want to be one of 73 programmers chasing after that lone programming position that opens up somewhere. I'm taking Java classes (sob) and brushing up on my C seems like good sense in this climate. I think my Perl is decent, but I wouldn't count on finding another job with it unless I want to move again.


      Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.


        Pardon me if my answer was slightly on the flippant side. What I did want to suggest is that there is continuity between the K&R C and today's C++ classes, objects, templates, containers, iterators, algorithms, and the like. So, if you feel like C/C++ is written in your future, just take it from where you stopped a few years ago and go for it. Same as you do when you go to tackle some tough job in Perl.

        Where I work, when we interview programmers for jobs, this is what we look for
        - the domain knowledge and experience : software for sci/eng measuring instruments
        - the programming experience : C++, real time, component software
        - the person : do you have courage and curiosity, can you identify and solve problems, can you find nuggets of knowledge wherever they hide - your head, books, vendor doc (yes!), web; do you know the hardships and joys of teamwork?
        Knowledge and experience are minimal conditions, personal qualities are decisive.

        If you meet a prospective employer who is not probing for these qualities, you should probably look around for another one.


Re: (OT) Where is programming headed?
by Sweeper (Pilgrim) on Dec 14, 2001 at 03:00 UTC
    Claiming that "C is obsolete" and that the future belongs to OO languages strikes me as more than a little absurd.
    And yet, there are still people that code in FORTRAN or COBOL...

    That reminds me that, in the age of word processing, Internet, etc, paper is obsolete, that you don't need telephone since there is email, that motor cars have made bicycles redundant and useless, that the steam engine has announced the doom of horse-driven carriages and sail boats, (and of course, as you can see in any vacation resorts, horses and sails are clearly a thing of the distant past).

Re: (OT) Where is programming headed?
by jepri (Parson) on Dec 14, 2001 at 05:01 UTC
    This is a famous fight. At my local university it is functional languages. Time will tell if they are right or not - as sweeper mentions we have mostly buried FORTRAN, COBOL and (sniff) Pascal.

    That's why I'll be really interested to see if the new perl takes off. It's got lots of advanced features that academics might appreciate. But it's quite complicated and I'm not sure that everyday coders will take to it.

    Does America have 'technical colleges' like we do here? That would be a much better bet for finding a C course, and cheaper to.

    I didn't believe in evil until I dated it.

Re: (OT) Where is programming headed?
by atcroft (Abbot) on Dec 14, 2001 at 16:19 UTC

    While I can understand that they want to try to turn out students capable of handling the challenges and technologies of tomorrow, in doing so it sounds like they are forgetting that to see further (a la Sir Issac Newton), you must stand on the shoulders of giants.

    In the RO (read-only) world of academia, perhaps a language may be "obsolete" because there are other languages designed to do the same thing, or because little can be learned from it that cannot be learned using another, but in the RW (real world) that I work (and have to get paid) in, a language is only obsolete when it is no longer useful (or no compiler or interpreter can be found for it).

    (Also, had that been the prevailing attitude everywhere, I can only imagine how much more legacy COBOL code would have failed because no one could find that it was going to have problems when 01-01-00 came around, for instance.)

    As to impossiblerobot's question in Re: Re: (OT) Where is programming headed? about the different types of languages, the best references I could find at hand were the language listing at , and a page on programming languages at .

    Update: Just so no one thinks I am speaking completely out of turn, for reference I do have a B.S. degree in computer science, although it has been a few years since I completed it, and I do think academic training and research in computer science does have purpose.

      I would certainly hope that Ovid remembered incorrectly (although, not for the sake of Ovid because it is unlikely, but for department head). His response sounded more like something a receptionist might say when the phones are too busy. Hopefully Masem was correct and he just forgot to add that they did offer C++. Still, a frightening omission.

      I can't imagine a university CS department that doesn't require their students to take at least one semester or quarter of Assembler. For me it was one of my most challenging programming courses and I believe it gave me much needed insight into what was really going on under the hood. Believe it or not, PL/1 was the language used for my first three required programming courses and going straight into assembler from there was a mind altering experience.

      If it had been a technical school, I might agree since they usually have a narrower focus (and sometimes offer more obscure languages like RPG--nothing wrong with that mind you).


Re: (OT) Where is programming headed?
by hsmyers (Canon) on Dec 14, 2001 at 03:47 UTC

    There was (maybe still is) an author by the name of James Martin who wrote numerous books on various comp sci subjects, and whose message always seemed (at least to me) to be ”Programmers will be obsolete…“ Obviously not the case. My guess is your university and James Martin should get together.


      Programmers will be necessary until someone solves the halting problem. The automatic programming problem (writing a program that writes programs for you) has been proven NP-complete.

      Even then, programmers will be necessary, because what programmers really do is translate human assumptions into symbols that a computer can manipulate. OOP, declarative programming, functional programming, descriptive programming.. they're all just frameworks on which to arrange our thoughts. Perl, C, C++, Java, Lisp.. they're just collections of symbols and primitive operations that we hang on a particular framework.

      The really hard part of programming is learning to think without contradicting oneself. When you tell a computer to contradict itself, it can extrapolate that contradiction into a database full of gibberish right smart quick. Humans, OTOH, are so good at dealing with ambiguity that we can hold self-contradictory opinions without ever noticing.

      Human thought is by nature fuzzy and ill-defined. We can identify a bear well enough to run away from it, while we're still far enough away that running will work. We don't care about its exact weight, or how many hairs are in its pelt, because finding out has never been a major survival trait.

      Computers, by contrast, are excruciatingly precise. the C code:

      float x, y; x = 1; y = 1; if (x == y) { printf ("they match.\n"); } else { printf ("close, but no cigar.\n"); }
      will fail as often as not, due to microscopic differences in the interpreted values of those two variables.

      Programmers take ideas from the fuzzy, human, "oh crap, a bear!" realm, and polish them until they work in the meticulous, "can't tell if 1 really equals 1" computer realm.

      That's not easy.

      You can always find people who'll say that computers should be able to write programs that whatever we tell them we want, and in a sense, that's true. The problem is that most people don't know what they want well enough to explain it to another human, let alone a computer.


        I think I might agree with your main point, but I'd suggest that in the future you avoid using technical jargon when you're not exactly sure what it means. For example:

        Says mstone:

        Programmers will be necessary until someone solves the halting problem. The automatic programming problem (writing a program that writes programs for you) has been proven NP-complete.

        I'm not sure what you mean here, and most of the obvious interpretations are false. If you mean that it's impossible to write a program that writes programs, that's wrong, because I have a program here that I use every day that takes an input specification and writes a machine language program to implement that specification; it's called gcc. Programs write other programs all the time.

        I doubt if there's any meaningful sense in which "the automatic programming problem" (whatever that is) can be shown to be NP-complete. If you mean that it's equivalent to the halting problem, you might also want to note that the halting problem is not NP-complete, and revise accordingly.

        You said that the C code will fail "as often as not":

        float x, y; x = 1; y = 1; if (x == y) { ... }
        But you're mistaken; the result of the test is guaranteed to be true. Certain float values can be compared exactly, and 1 is among those values.

        In general, if two floats both happen to represent rational numbers whose denominators are both powers of 2, and if neither float's significand exceeds the available precision, then the values are represented exactly and can be compared exactly. In particular, integral values less than about 253 will be represented and compared exactly.

        So while I think you may have good points, the factual errors in your note spoiled its persuasiveness for me.

        Hope this helps.

        Mark Dominus
        Perl Paraphernalia

Re: (OT) Where is programming headed?
by Steve_p (Priest) on Dec 14, 2001 at 20:40 UTC
    I remember when I graduated a lowly five years ago. We were taught COBOL and told that we would never write a new program in it. We were taught C++ since it was the language of the future. I never saw a UNIX system, since Windows NT was going to replace them all. Since that time, I have, unfortunately, probably written and maintained more lines of COBOL code than anything else. I have yet to write a C++ in a work environemt. I spend my time working on UNIX systems at work and at home (Mac OSX, Linux, BSD, etc.). I also write more C, Perl, and PL/SQL (Oracle's internal Pascal based language) than any other languages.
    One thing has remained constant. The ability of the university professors in computer science to get everything wrong. OO may be popular in a university setting, but it will continue to remain a small part of the technology of corporate IS until Java finally starts to replace more and more COBOL systems. In many company's my guess is that this will not happen for at least 10 more years.
Re: (OT) Where is programming headed?
by mr_mischief (Monsignor) on Dec 18, 2001 at 08:51 UTC
    Perhaps they don't want their students to become maintenance programmers. Perhaps they want the glory of turning out buzzword fanatics, and they want to leave 'menial' work like maintenance to tech school graduates. Perhaps they're just putting a spin on things because they don't have instructors available who are competent in procedural programming.

    At the university I dropped out of, Pascal had been the introductory language of choice until my freshman year. It was replaced by Ada because Ada taught a broader set of concepts and had improved a bit on Pascal's type system, not to mention that since it is a 'real working language' -- not a teachign tool like Pascal, the same language could be used for a longer period from course to course. This allowed the students to bring everything back to one set of texts for one language and use one compiler for most of the coursework needed for the degree.

    Did this keep people isolated to one language? Absolutely not. There was a class called "C and Unix 1" and a "C and Unix 2" which taught the OS and the language together for historical, demonstrative, and a host of other reasons. There was also a SmallTalk class, and a Lisp class or two. One of the things that excited me when I was planning my track was the pair of classes "Survey of Programming Languages 1 & 2". One thing my close friend was excited by was "Programming for Numerical Analysis and Suited Languages". There were also compiler classes, a basic OS class, a graphics programming class, and several others, many of which used a language peculiar to the class in order to keep the level of immersion in different languages high. Some combination of all of these was required as one's CS elective if one wished to graduate from said university with said degree.

    This might sound like a lot to some, especially when you consider the mandatory Calc 3, Linear or Matrix Algebra (both recommended), a 300+ level Stats or Actuarial class, Discrete Mathematics, and 60 credit hours of work outside the major. It was at a public uni with only an 85% placement (both work and grad school) for its CS graduates within 9 months of graduation -- a rather poor showing when I attended in 1994 and 1995.

    Perhaps some schools at any level should remember why institutionalized education exists. It's there to expose the student to a wider range of things, ideas, and experiences than private teachers can and at less cost. It is my NSHO that any school which pretends to be a university instead of a polytechnic, trade school, or guild school and which insulates its students from the world so much as many do should rethink why it was given a charter and start acting more in the spirit of that document. Focused schools are fine for teaching a particular well-defined set of skills, but a university was a more global purpose and the education there should reflect that. This holds true whether the area of study is Computer Science, History, or Central European Etymology of the Later Dark Ages.

    Sorry for the long-winded rant. I guess I find, being a full scholarship dropout, that certain people in certain towers should remind themselves that the whited sepulchre looks ivory on the outside, too. Some of the greatest intellects I've met are professors or have advanced degrees. The same is true about high school students.
Re: (OT) Where is programming headed?
by Anonymous Monk on Dec 14, 2001 at 23:27 UTC
    It's a horses for courses thing. I work for an engineering company writing Fluid Dynamics code, using (gasp) fortran. Most people turn their noses up at fortran, but it is a very good language (espeacially f90/f95) for what I do - heavy maths.

    C will be around for a very long time in certain circles, as will COBOL, Java, Perl etc. They will not be the coolest/most populat forever, but will survive in niches where they offer the best solution.

    It is more important what you write rather than what it is written in (within reason).

Re: (OT) Where is programming headed?
by Rex(Wrecks) (Curate) on Dec 15, 2001 at 05:55 UTC
    I would disagree with the sweeping statement that C is obsolete. Nearly ALL base OS code and drivers are still written in C. They may have a case for apps, but for any "guts" code, you will still mostly see C. Even the much debated Windows OS's are written nearly entirely in C. I doubt C will die anytime soon.

    Just my $0.02 ($0.032 CDN)

    "Nothing is sure but death and taxes" I say combine the two and its death to all taxes!
      C can't die! All of the programming languages I use are written in C! (Compilers, runtimes, interpreters...)

      ps: Watch your exchange rates! Today your $.02 USD is only worth $0.0312 CDN!