Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie

Poll

Options
  • 22-07-2004 7:07pm
    #1
    Closed Accounts Posts: 5,564 ✭✭✭


    I'm wondering.

    I could be way off base, but, my sense is that more and more, it is the case the programmer type people are shying away from what are called 'hard' languages, or non-memory managed languages, and then increasingly Colleges/Unis are putting out people who have scant knowledge/or little interest in the same.

    Perhaps you'd label me as an elitist, purist, self important 'blah', but, rather then learning Java, VB, C# and friends first, would it not be more logical to get down and dirty fast, and be taught Assembler, C, C++ and friends?

    I guess what I'm looking for some input/flames on here is, do you have any real right to call yourself a programmer, if you find the fundamentals Bit arrangements, Assembler mnemonics and syntax or memory management in asm/C/C++ difficult ?

    What is to become of the industry as more and more programmers, seem to know less and less about the nitty gritty?

    How is quality code meant to get written, if the people who write it, have no real concept of writing optimised, non-spagetti code al-la automagic 'visual' languages ?

    Opinions flames?

    Programmers should all learn 124 votes

    Assembler
    0% 0 votes
    C
    19% 24 votes
    C++
    19% 24 votes
    Java
    21% 27 votes
    C#
    33% 41 votes
    Visual Basic
    6% 8 votes


«1

Comments

  • Closed Accounts Posts: 8,264 ✭✭✭RicardoSmith


    Visual code does not equal bad code
    Visual code quicker to develop thus cheaper
    Theres more work in Visual languages for a wider range of skills


  • Registered Users Posts: 1,372 ✭✭✭silverside


    I voted for Java *and* C++.

    Java because
    its a nice language
    it doesnt have all the syntactical pitfalls of C++
    it is good for teaching algorithms etc.

    However i think all *programmers* should also learn a lower-level language such as C++,C or assembler. Not first thing because its scary and teaches you a certain way of thinking. Learn an OO / good design mindset first, then get down to the nuts and bolts behind it.

    Not necesarrily everyone studying software or computing, but everyone who sees themselves as a programmer should understand how memory, and at a lower level processors, works. I think most good computer courses have something like this (write your own compiler/ write some assembler / do an electronics project) for everyone. I would expect anyone going for a coding position to be able to explain memory management, just yesterday I had an interview where I was asked to write a smart pointer class and it wasnt even a full-on programming job.

    I would be disappointed to hearpeople can get through 4-year degrees without writing enough C++/assembler to understand it, but not sure how true that is.

    I wouldnt inflict VB on anyone.


  • Registered Users Posts: 885 ✭✭✭clearz


    Originally posted by Typedef

    I could be way off base, but, my sense is that more and more, it is the case the programmer type people are shying away from what are called 'hard' languages, or non-memory managed languages, and then increasingly Colleges/Unis are putting out people who have scant knowledge/or little interest in the same.

    Your right. Im going into 4th year now and the only language I have done in college is Java. Not one variable have I written in another language. I have learned other languages like c#, VB and C outside of college but most of the rest of the class havent a clue that other languages even exist. In 4th year everything will also be done in java.

    I voted for then all. You can never know enough languages.


  • Registered Users Posts: 1,372 ✭✭✭silverside


    Don't want to start an argument here, but I get the impression that DCU forces people to do a variety of languages (Java, Prolog, assembler, etc), whereas with the more traditional colleges like UCD, they are more comp sci focussed and you don't have to do as much coding. I am very surprised to hear you can avoid low-level languages.

    Personally I know because I know C++ I could learn Java or VB if I needed to. But I don't think the converse is necessarily true. And I don't think learning languages just for the sake of learning them is a good thing, its learning to think in different ways (which e.g. Lisp or Assembler vs. Java gives you) is good.


  • Closed Accounts Posts: 3,357 ✭✭✭secret_squirrel


    binary.jpg

    'nuff said.

    Having said that VB cant be beat for easy intro to coding...and also a nightmarish problem fixing said coding.


  • Advertisement
  • Registered Users Posts: 1,372 ✭✭✭silverside


    d'you think?

    I think vb can't be beat for putting a few buttons on screen and playing around; for an intro to proper programming Java beats it hands down.


  • Closed Accounts Posts: 3,357 ✭✭✭secret_squirrel


    easy intro to coding <> proper programming

    put two noobs of equal ability together - start 1 on VB and 1 on Java. I dont believe anyone would bet on the java guy having a working app first.

    easy intro to coding = something working quickly.

    proper programming = easy to support, well documented, efficient code.


  • Registered Users Posts: 1,372 ✭✭✭silverside


    yes you are right. I suppose it depends on wht your aim is. One day later, the VB guy will be more productive, But a month down the line, the Java guy will be - unless he has to do a lot of GUI/DB work in which case it might be a closer call.


  • Closed Accounts Posts: 3,357 ✭✭✭secret_squirrel


    Yea I'd agree with ya there alright. The application Im working with at the moment is absolutely gorgeous from a programmers point of view its almost pure java (+ sybase db).
    Completely self contained (1 virtually redundant reg entry), self contained JVM, painless server updates, serverside client version control, loads of programmers bells and whistles inside the app itself and a great gui too.
    They ported the serverside from HP-UX to AIX in 3 weeks for us.....sublime. Real pleasure to work with. Just wish I was on the development team instead of project managing it!


  • Registered Users Posts: 1,865 ✭✭✭Syth


    the more traditional colleges like UCD, they are more comp sci focussed and you don't have to do as much coding. I am very surprised to hear you can avoid low-level languages.
    In UCD we had to learn Java in 1st year and a tiny smidgen of Assembly, only for 2 or 3 lectures though. In 2nd year we did Lisp for a semester, along side Java which we did in our data structures and algotithms class.


  • Advertisement
  • Registered Users Posts: 6,316 ✭✭✭OfflerCrocGod


    Originally posted by silverside
    I get the impression that DCU forces people to do a variety of languages (Java, Prolog, assembler, etc), whereas with the more traditional colleges like UCD, they are more comp sci focussed and you don't have to do as much coding. I am very surprised to hear you can avoid low-level languages.
    In UCD you can avoid ALL work:rolleyes:, seriously I'm going into 4th year and I know nada - nothing!! There is no motivation to do anything, so we do nothing.


  • Closed Accounts Posts: 8,264 ✭✭✭RicardoSmith


    The biggest memory leak I every saw was in a Java program that one development team with about 10-15 people on it for 12 months wrote. We replaced it with a VB app that took a team of 2, 3 months to write. Writing bad code can be done in any language.


  • Registered Users Posts: 950 ✭✭✭jessy


    C is truly the language of the Gods

    Programming is not really about writing code; it’s about problem solving, so a beginner programmer should not start of learning VB. Why? Because it solves a lot of problems in other languages like memory leaks and stuff. So why not use VB all the time, well we cant write everything in it, so when we have to do low level programming you need to think like a real programmer, and use some real problem solving skills, Which you will learn in languages like C, C++, Pascal, 8086.

    Jim


  • Registered Users Posts: 21,264 ✭✭✭✭Hobbes


    Java. It is a nicer version of C. :p Also easier to learn coding conventions, its free and it is more cross platform friendly (although C is close too).

    Everyone should learn Assembler, even the basics to understand how the computer works.

    Other then that starting off, you would be better to learn a language that teaches more structured programming rather then being able to create something by drag and drop. Pascal for example is good for learning starting off (but I'd say Java too).

    Once you understand that, you can move to whatever it is that you want to learn (C, C++, Java, .Net, Cobol, etc).
    The biggest memory leak I every saw was in a Java program that one development team with about 10-15 people on it for 12 months wrote. We replaced it with a VB app that took a team of 2, 3 months to write. Writing bad code can be done in any language.

    If you managed to get a memory leak in Java theu must be piss poor programmers.

    But VB as a commercial language is horrible (ok for prototyping). It generally makes things to easy make, which ends up in a maintaince nightmare.
    I dont believe anyone would bet on the java guy having a working app first.

    I find that very hard to believe, unless your counting drag and dropping or using wizards as programming. Anyway Eclipse (and other tools) also support drag and drop type programming but it is a bad idea to start off that way.


  • Registered Users Posts: 14,714 ✭✭✭✭Earthhorse


    I'm wondering.

    What's the difference between someone who studies computer science say, knows the fundamentals of C/Assembler/Whatever inside out, leaves college, gets a job at Really Big Corp Incorporated and ends up writing in VB day in, day out and someone (like myself) who studies commerce, works in admin for a while but gradually shifts over to coding the very same apps in VB day in, day out?

    Now, forget for a second that one is writing better code than the other because what you (Typedef) seem to be saying is that one has the "right" to call themselves a programmer because they know the fundamental bit arrangements, assembler mnemonics and so forth and the other doesn't (have that right) because he doesn't (know those things).

    As somone else said programming is about problem solving. Students should be thought logic and abstract thinking and, from a coding point of view, any language that can practically reinforce these concepts.

    The best distinction I ever head on the issue was from Joel Spolsky who essentially separates programmers into tiers; those at the top (understand pointers), those just below them (know a lot but don't understand pointers) and a third tier I think but I forget it right now.

    The drift you are seeing in the industry, from people who know everything inside out to specialists who know just one or two things, is just a sign of the industry maturing and people not wanting to solve problems that have already been solved. If it's any comfort they're always be more and better paid work for the former.


  • Registered Users Posts: 7,468 ✭✭✭Evil Phil


    I've voted for C and Java because my first 3 years as a developer were pure VB. Then I got a job in working with Java and believe it or not InstallSheild and the Win32Api. To get my head around these last two I studied C. Six months of this and my ability as a programmer had improved an incredible amount. So Java for OOP and C for memory management and how the code works in the computer.

    Any assembler I studied in college is long forgotten but I'm sure it helped. Anyway I reckon if you have C and Java you can apply this to any other languages on the list. Looking back: Java first to get my head around programming and then get down and dirty with C.

    Me, I'm working with C# now but I still dabble in VB and I think its a great language. Its not something you should learn to code with though.


  • Closed Accounts Posts: 8,264 ✭✭✭RicardoSmith


    Originally posted by Hobbes
    If you managed to get a memory leak in Java theu must be piss poor programmers.....But VB as a commercial language is horrible (ok for prototyping). It generally makes things to easy make, which ends up in a maintaince nightmare.



    A bad programmer will be bad regardless of what language he uses. The same guys who wrote the Java app with the memory leak, also wrote VB and C++ apps which were bug ridden. We replaced a good number of their apps with VB's ones in a fraction of the time and with few support issues or bugs reported.

    If you have a problems with maintaining VB code then it must be poorly written.

    I wrote a VBA application for a finance house a while back. To replace a much larger app that never worked reliably. Took me 4 months. After it was live 12 months we had only one reported bug, which took 5 mins to fix.

    Whereas another place I worked in had a VB app that had 200+ bugs a month being reported by clients. They wrote a bug tracking system to handle that, and even that had bugs. Last I heard they were switching to Java. Good luck to them I say.

    Whats consistent in any place I've worked in where theres been a very buggy app. Is that the coding is very illogicial and they generally use very poor coding practises and discipline. That theme runs through everything they do, from documenting their code, to writing up design specs, through testing it.

    Another place I worked had a testing team of about 15 people test calculations in a part of the product. When we looked at the tests they were doing, only about 10% of the tests very valid. The other 90% didn't actually test anything!. We wrote an app to do their test for them, and a test that previously took 30mins now took 2 mins.


    While I agree that learning a language like C++ is better from a coding point of view. In the real world it doesn't mean that a C++ programmer is going to be a better problem solver than a Delphi programmer. Being a good coder is not the same thing as being a good problem solver.


  • Registered Users Posts: 21,264 ✭✭✭✭Hobbes


    Originally posted by RicardoSmith
    A bad programmer will be bad regardless of what language he uses.

    Prehaps, but for a language that handles all the memory management, it takes a special kind of programmer to create a memory leak.
    Being a good coder is not the same thing as being a good problem solver. [/B]

    A good coder will write code which can be easily maintained, well remarked and adheres to a coding convention guideline (laid out by the company/group).

    VB doesn't teach this straight off (in that it doesn't enforce it), if you don't have the dicipline to start with then your code becomes a mess and you carry those bad habits to other languages.

    It is better to pick a language that teaches this first.

    Problem solving is not linked to any one language.


  • Registered Users Posts: 330 ✭✭leahcim


    I never quiet understod the idea of learning languages. In my opinion you learn programming paradigmes and all you need to do to use a particular language is to learn the necessary syntax. If you understand how to write structured code you could equally use C or pascal. For OOP you could use C++, C#, java. GUI builder languages like VB and Borland Delphi are as good as any language for writing code. The problem with writing apps in VB etc is the temptation to take shortcuts and link the code too tightly with the GUI.

    The main problem with trying to put a computer language on your CV is that is usually isn't good enough to just know the language. You need to know the environment the language is going to be used in. If you do a search on monster.ie there will be loads of C++ jobs but they will be spread accross all kinds of platforms and systems. E.g. Microsoft VC++, Borland C++ builder and GCC for unix etc, each has its own library and component set.

    Personally I could write a simple app in C++, Pascal, Java, VB, Prolog, List, Cobol and Delphi but comercially I could only sell my self as a Java or C++ programmer because there are the only ones I have a few years experience writing apps in.


  • Closed Accounts Posts: 35 Ivan Dunaev


    just a notice: feel difference between VB and VB.NET


  • Advertisement
  • Registered Users Posts: 2,150 ✭✭✭dazberry


    Originally posted by Typedef

    Perhaps you'd label me as an elitist, purist, self important 'blah', but, rather then learning Java, VB, C# and friends first, would it not be more logical to get down and dirty fast, and be taught Assembler, C, C++ and friends?

    That's an interesting take in that I'm probably a bit old school in that I've avoided Java, VB and C# for perhaps similar reasons.

    In that vain I voted for assembler - but re-thinking about it, personally its something I haven't needed to do in 9 years (still do a bit personally - but definitely not commercially anymore). This begs the question, do we all really need to know assembler, or for that matter any one of those languages particularly for a specific reason.

    TBH I don't think so. Yes I do think programmers should understand fundamental bit arrangements and operations, memory management (and a few other things that seem to get missed such as threading and proper use of OO if applicable). Most of the languages above will support atleast 3 of those concepts. Now, no matter your particular favourite, personally I would consider it foolish to presume any one language above better than any other without reference to what that language has to deliver.

    But what I sense from this thread is the ago old language snobbery. When I first starting programming on the PC in 1989 before going to college, in general you had Basic, C and Pascal of some variety or other. Regardless of anything else, by proxy you were a better programmer if you programmed in C - (including such classic titles at the time like "Born to Code in C" ISBN: 0-07-881468-5)) whether you actually were or not.

    Primarily these days I develop in Delphi (code al-la automagic 'visual' language). As Hobbes hinted, an issue with these type of tools is that a great mess can be created. The thing about it is that is the price you pay for misuse of that feature.

    For the Java ppl, a mate of mine works in a huge multinational. They coded in C++ for a long time, and the architects used to be going mad about memory leaks. Now its pure Java, and the architects are going mad over poor memory usage (by the developers). I'd look on this more as a misuse of a feature than a problem with that feature.

    I think the real issue with the visual environments is the phenomenon of component droppers, where they do little more than scripting a multitude of components together = program. Someone does this as a hobby - no problem, someone sells themselves as a commerical developer - problem.

    But regardless of all that I don't think its about language or tool. I think a good programmer is open-minded, always looking for better ways to do things, be that technical or not. A good programmer is always learning, even from mistakes. I think Java, C, assembler or Delphi or anything else is irrelevant really.

    D.


  • Closed Accounts Posts: 5,564 ✭✭✭Typedef


    I think what irks me most about automagic languages, is the laziness of coding that it allows you to get away with and the 'waste' that goes on, in a system.

    I think fundamentally, that's what I dislike most about languages which are designed to let you away with it.

    Also, just on the language snobbery charge I'd like to say
    .section .rodata
    
    .noddy:
            .string "bollox\n"
    .section .text
    
    .globl _start
    _start:
            movl $0x4,%eax
            movl $0x1,%ebx
            movl $.noddy,%ecx
            movl $0xf,%edx
            int $0x80
    
            movl $0x1,%eax
            movl $0x0,%ebx
            int $0x80
    
    
    


  • Closed Accounts Posts: 1,575 ✭✭✭elivsvonchiaing


    A guy I used to work with (Fortan programmer) said (I don't know if this was his or was a quote from somewhere else) - "There are two types of programmer; there's the lean-to ****-house shack builder and the cathederal builder" I would agree with this.

    If you're going be selective about error-handling, messy with logic, cheap-skate on user-interface - it doesn't matter whether you have done assembly - C etc. However,
    I believe with enough experience of low-level non-memory managed languages you do become a better programmer - you are faced with getting it right - or having no idea what went wrong.


  • Registered Users Posts: 2,150 ✭✭✭dazberry



    Also, just on the language snobbery change I'd like to say
    program HelloWorld;
    {$APPTYPE CONSOLE}
    uses
      Windows;
    
    const
         aMsg : pchar = 'Thanks, but I'#39've done my time....';
    var
       nRead  : Cardinal;
    
    asm
     push STD_OUTPUT_HANDLE;
     call GetStdHandle;
     push $00
     push offset nRead
     push $21
     push aMsg
     push eax
     call WriteConsole;
    end.
    


  • Registered Users Posts: 21,264 ✭✭✭✭Hobbes


    Originally posted by dazberry

    Primarily these days I develop in Delphi (code al-la automagic 'visual' language). As Hobbes hinted, an issue with these type of tools is that a great mess can be created. The thing about it is that is the price you pay for misuse of that feature.

    Delphi is a form of PASCAL and is a good language to get started off on.

    Wizards, regardless of language are a bad thing. Unless you know exactly what the wizard is doing you shouldn't use them (ref: pragmatic Programmer).


  • Closed Accounts Posts: 44 Err..


    To get back to the original post:
    Originally posted by Typedef
    Perhaps you'd label me as an elitist, purist, self important 'blah', but, rather then learning Java, VB, C# and friends first, would it not be more logical to get down and dirty fast, and be taught Assembler, C, C++ and friends?

    Yes. Absolutely. Sort of. Well, as long as you learn some of the latter ones at some stage (not necessarily first). As some people have said no language is necessarily better than the next. Horses for courses. But everyone leaving college should at least know C and an object oriented language. Assembly is not as important for most programmers as it used be (I remember using it back in DOS days to write to video memory!). Enough to know it exists and the fundamentals of how it works.


  • Closed Accounts Posts: 920 ✭✭✭elvis2002


    JAVA FOR LIFE. nuff said


  • Closed Accounts Posts: 228 ✭✭daggeredge


    I'm in second year doin some repeats at the mo in computer science...
    I get the impression if i learned C before i learned java that it would have been way easier to learn java and I'd avoid all the pitfalls i have now cos I'm used to being cushioned by the compiler!


  • Closed Accounts Posts: 7,230 ✭✭✭scojones


    I'm in fourth year in college. In that time I have studied everything in the list, some of them intensively (can you guess which ones were covered in college?). I feel that programmers should all learn ASSEMBLER,C AND C++, in that order. First to get an idea of what your computer is actually doing, and how it does it, then to get an idea of structured programming, then to move on to OOP. After that other languages shouldn't taken more than a few weeks to get used to the syntax. I think that in-depth expertise / knowledge of assembler,c/c++ makes a very good programmer. These three languages should be stepping stones before playing with the silly visual ones (VB,C#,JAVA) - and then running away from them with all of your hair in your hands.

    The above is just my opinion, feel irrate if you wish.


  • Advertisement
  • Closed Accounts Posts: 8,264 ✭✭✭RicardoSmith


    Knowing a language very well does not make you a good programmer. A good programmer is a good problem solver amongst other skills.


Advertisement