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
Hi there,
There is an issue with role permissions that is being worked on at the moment.
If you are having trouble with access or permissions on regional forums please post here to get access: https://www.boards.ie/discussion/2058365403/you-do-not-have-permission-for-that#latest

C++

  • 12-08-2010 9:34am
    #1
    Registered Users, Registered Users 2 Posts: 1,470 ✭✭✭


    Hi All,

    I want to learn C++!

    I have no programming experience but would like to learn C++ for a job role in finance. I've been using computers for nearly 20 years and would consider myself relatively computer/tech literate (minus the programming ability).

    So i was just wondering if anyone could reccommend any good courses in Dublin or online? Preferably with an exam/accreditation at completion to reflect ability.

    Also could anyone advise how long it will take to reach a basic level of operation? Where i could expand my knowledge through trial and error but have the skills to adapt C++ for basic functions?

    Mods feel free to move if this isn't the most appropriate forum, i searched others but found no mention of C++.


Comments

  • Registered Users, Registered Users 2 Posts: 5,112 ✭✭✭Blowfish


    Also could anyone advise how long it will take to reach a basic level of operation? Where i could expand my knowledge through trial and error but have the skills to adapt C++ for basic functions?
    The biggest time consumption won't actually be C++, but learning the fundamentals of programming in general. To be at a competent level where you can pick up new languages/libraries and adapt them to what you need will take several years at least.


  • Closed Accounts Posts: 137 ✭✭Banji


    I doubt you will get a job in finance using your new skills in the immediate future - but don't let that put you off. Programming can be fun.

    Look up book reviews on amazon and then try get that book in a library.


  • Registered Users, Registered Users 2 Posts: 1,470 ✭✭✭Mr_Roger_Bongos


    Blowfish wrote: »
    The biggest time consumption won't actually be C++, but learning the fundamentals of programming in general. To be at a competent level where you can pick up new languages/libraries and adapt them to what you need will take several years at least.

    Thanks for the responses!

    With regards it's usage, i'll be using it in a finance environment (not massively complex uses), using different security prices to take basic actions - Buy/Sell etc.

    Unless i have a personal interest, i won't need any other languages or libraries beyond this limited use.

    As far as i understand it, it's the ability to design new scripts around certain market variables that i'll need.


  • Registered Users, Registered Users 2 Posts: 2,534 ✭✭✭FruitLover


    Is there a particular reason you've decided on C++? I can think of about 10 more beginner-friendly languages off the top of my head. Depending on what you need to do, any of those 10 might also be more appropriate/efficient.


  • Registered Users, Registered Users 2 Posts: 1,470 ✭✭✭Mr_Roger_Bongos


    FruitLover wrote: »
    Is there a particular reason you've decided on C++? I can think of about 10 more beginner-friendly languages off the top of my head. Depending on what you need to do, any of those 10 might also be more appropriate/efficient.

    It was for a particular role, alot of the successful applicants seem to have the skill. Usage outlined above. Would you reccomend one of the ten that might be a good route into C++?


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 760 ✭✭✭mach1982


    It was for a particular role, alot of the successful applicants seem to have the skill. Usage outlined above. Would you reccomend one of the ten that might be a good route into C++?

    If want a good route in to C++ then learn C, as once you have basic of C then it won't take you long to learn C++, Java, Perl, PHP

    You mention basic usage , what do mean by that, could give an example. ie will the program be command line on GUI. To me basic useage is know about Objects method/functions, conditional stammers ( ifs and loops ) and input and output .


  • Registered Users, Registered Users 2 Posts: 1,470 ✭✭✭Mr_Roger_Bongos


    mach1982 wrote: »
    If want a good route in to C++ then learn C, as once you have basic of C then it won't take you long to learn C++, Java, Perl, PHP

    You mention basic usage , what do mean by that, could give an example. ie will the program be command line on GUI. To me basic useage is know about Objects method/functions, conditional stammers ( ifs and loops ) and input and output .

    Thanks for the suggestion, i'll investigate the C route!

    Your definition of basic ties exactly with mine, - If 'value A' = 'certain variables', THEN, ACTION, with multiple values and possible actions.


  • Registered Users, Registered Users 2 Posts: 981 ✭✭✭fasty


    There's no reason to learn C as a prelude to learning another language, especially C++. That makes no sense.

    If you want to make command line applications that take input and spit out files or whatever, literally any language will do.


  • Closed Accounts Posts: 137 ✭✭Banji


    I don't think there is any point in using C as a stepping stone. If you're going to ultimately just be programming in C++, you might as well start with that. Quick search seems others have the same consensus as me:

    http://forums.xkcd.com/viewtopic.php?f=40&t=26700
    http://stason.org/TULARC/webmaster/lang/c-cpp-faq/19-Should-I-learn-C-before-learning-C.html
    http://www2.research.att.com/~bs/bs_faq.html#prerequisite
    http://www.linuxquestions.org/questions/programming-9/do-you-really-need-to-learn-c-before-c-108384/


  • Registered Users, Registered Users 2 Posts: 760 ✭✭✭mach1982


    fasty wrote: »
    There's no reason to learn C as a prelude to learning another language, especially C++. That makes no sense.
    .

    It called C++ as in C plus extras, it added object ordinate elements to C. therefore you if knew C you know at least 70% of C++.


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 981 ✭✭✭fasty


    If you know C, you can write C and use a C++ compiler. You do not know C++.

    Why learn such a low level language as a stepping stone to higher level ones?


  • Registered Users, Registered Users 2 Posts: 1,470 ✭✭✭Mr_Roger_Bongos


    Thanks for all the advice so far everyone, very helpful so far!

    So what's the consensus, jump straight into C++? The argument about learning C as it amkes up most of C++ seems to make sense.

    Just to re-iterate, i have absolutely NO experience programming. It would be a dummy guide, or C++ for idiots i'd probably start with!


  • Closed Accounts Posts: 2,720 ✭✭✭Sid_Justice


    i think you're underestimating the intellectual demands of learning to program. if you want to achieve anything worthwhile, even writing some "simple scripts to compare the prices of currencies" you will need to learn some of the philosophy of programming first. of course, after about an hour you could be using someone else's programmes and have an idea of how and why they work but you won't really appreciate what's going on.

    If you're dead set on learning C++, i recommend you get an entry level college programming book, e.g. the Big c++ book, start at chapter 1 and work your way through it organically.

    as the lads have mentioned, c++ language has some complex ideas very visible to the programmer, where more modern languages - java and c# have taken that away from the programmer and allowed her to get the job done a bit easier.

    ultimately, java and c# are more user friendly and unless you're actually trying to get into a dev role should be adequate for your needs.

    wrt courses, fas run a java one.


  • Registered Users, Registered Users 2 Posts: 3,945 ✭✭✭Anima


    If you're doing lots of string heavy stuff as apposed to maths, I'd probably go with Java or C#. Its a lot easier and more forgiving.

    As for learning C before C++, similar languages but different styles of programming. Probably better off learning C++ or another high level language by the sounds of things.


  • Registered Users, Registered Users 2 Posts: 1,470 ✭✭✭Mr_Roger_Bongos


    i think you're underestimating the intellectual demands of learning to program. if you want to achieve anything worthwhile, even writing some "simple scripts to compare the prices of currencies" you will need to learn some of the philosophy of programming first. of course, after about an hour you could be using someone else's programmes and have an idea of how and why they work but you won't really appreciate what's going on.

    Im fully aware this isn't going to be easy, but looking for another string in the bow! Thanks for the advice.


  • Closed Accounts Posts: 137 ✭✭Banji


    Thanks for all the advice so far everyone, very helpful so far!

    So what's the consensus, jump straight into C++? The argument about learning C as it amkes up most of C++ seems to make sense.

    Just to re-iterate, i have absolutely NO experience programming. It would be a dummy guide, or C++ for idiots i'd probably start with!

    C++ for dummies isn't very good imo so that gets a no vote from me :D


  • Registered Users, Registered Users 2 Posts: 1,481 ✭✭✭satchmo


    I agree, learning C before C++ will only get you learning bad habits. Go straight to C++ - you should get your head wrapped around object oriented programming relatively early.

    I always recommend the tutorial at cplusplus.com, it's easy to follow, well structured, and covers the basics well. I don't see any point in buying a 60 quid book when there are so many tutorials out there on the web for free.


  • Registered Users, Registered Users 2 Posts: 207 ✭✭hobbit stomper


    I have over 6 years professional experience in PHP and I still learn new stuff everyday, especially since PHP started supporting OOP (object oriented programming).

    If you need C++ for a Job, then you either have it, or you don't but you can't just learn that in a few months by just taking a few courses. It's the whole concept of programming that takes a good while until you understand it and you can use it.
    It's kinda weird that your job asks for C++ on the side as a bonus. Because if you have C++, it'll be your main focus!

    It's like asking a salesman, you need sales experience and oh, if you're a professional soccer player, it would be a bonus.


  • Registered Users, Registered Users 2 Posts: 9,579 ✭✭✭Webmonkey


    It's just stupid recruiters job descriptions. A big long list of skills and no information of what the job actually entails.

    I've recently started looking for work


  • Closed Accounts Posts: 329 ✭✭drBill


    Disadvantages of using C++ to learn programming include
    (a) it won't necessarily make a good programmer out of you
    (b) it's a bit of a dying language and as such it's not easy to get information, tools, resources, etc on.
    (c) it could blacken your heart, break your spirit, destroy your motivation and sap your will to learn if not your will to live.
    I have over 10 years experience in C++, now I work with Java / J2EE and would never go back.


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 9,579 ✭✭✭Webmonkey


    drBill wrote: »
    Disadvantages of using C++ to learn programming include
    (a) it won't necessarily make a good programmer out of you
    (b) it's a bit of a dying language and as such it's not easy to get information, tools, resources, etc on.
    (c) it could blacken your heart, break your spirit, destroy your motivation and sap your will to learn if not your will to live.
    I have over 10 years experience in C++, now I work with Java / J2EE and would never go back.
    I think that's a little harsh on C++. C++ has it's place in industry. Maybe a high level language was better suited for what you working on.

    Getting familiar with QT frame work can make C++ great fun and a great language to use.


  • Registered Users, Registered Users 2 Posts: 558 ✭✭✭wobbles-grogan


    I can second the cplusplus.com website. its excellent and got most of my friends through c++ in college.

    Tbh, i would recommend you use C# or Java to learn, its higher level and will teach you the fundamentals of programming in a very Object Orientated way. Once you get the fundamentals down, go ahead and learn c++. Thats just my opinion though....


  • Registered Users, Registered Users 2 Posts: 1,481 ✭✭✭satchmo


    drBill wrote: »
    (a) it won't necessarily make a good programmer out of you
    Neither will any other language - in fact I'd argue that as strict as C++ is, it will force you to be a better programmer than some other typeless garbage collecting API-heavy language.
    (b) it's a bit of a dying language and as such it's not easy to get information, tools, resources, etc on.
    Try telling that to the games industry, which is almost entirely based on C++.
    (c) it could blacken your heart, break your spirit, destroy your motivation and sap your will to learn if not your will to live.
    Well, I'm not really going to argue with that one! But I will also say this it can teach you to understand processors, compilers, memory architecture, optimization, and give you a much deeper understanding of the machine in general.

    I'm by no means saying C++ isn't without its faults, but every language has its place and there's a reason that C++ is the standard choice for performance-critical code.


  • Closed Accounts Posts: 285 ✭✭Plebs


    There's a lot of misinformation going around here about C++!

    I'm not a fan myself (C is my favourite language), but C is definitely as popular as ever. Particularly when it comes to high-performance computing (MPI, OpenMP, CUDA, OpenCL, etc.). The kind of skills that are very attractive in finance/trading.

    FPGA programmers are in short supply too these days and the financial industry is becoming a major driver of innovation. The industry is certainly a massive market for the hardware manufacturers. Much like the military in many ways. Latency is so critical these days that the old super-efficient Fortran and C libraries are making a come-back. I've even heard of custom chips being fabricated designed to handle specific tasks.

    Not a big fan of Java myself, but I do admire what has been achieved: there's a library for everything (almost) and it's great for things like networking and threading. It's also a great language when doing large complex projects spread across multiple teams. I'm actually converting a synchronous program written in PHP to an asynchronous Java program at the moment - initially I really didn't want to code in Java, but the libraries available to me and the consistency is really great. I love the standardised Java documentation too.


  • Registered Users, Registered Users 2 Posts: 608 ✭✭✭t0mm13b


    I would advise to start off with C, because
      The fundamental syntax is largely the same
      Understanding how pointers and memory allocations work
      It can be fun if you have the will and the spirit and perseverence.... do not give up... post to forums, go on irc and chat on appropriate channels

    Ignore those that tell you that C is a bad place to start, I'll assure you it aint! Why?
      You will appreciate the undertaking and responsibility in managing the memory and how to master that... the real power behind C is the pointers, get the principles right and you're on your way to be able to read C++ with little or no effort at all...because after all, using barebones libraries, the principles are fundamentally the same in that respect....

    Once you have the fundamentals in place, then it's a matter of shifting the mentality of the C programming paradigm into using C++ objects instead of being tied to simple generic data types....

    I am not a fan of Java and more than so, a lot of them are actually using Java without appreciating the black arts involved in memory allocations and strategies (that is where the understanding of pointers will earn you respect and ++ of your peers).

    I am a C/C++ and I have witnessed a lot of people who are mainly Java programmers and have little or zero knowledge of C++, and too often, post on forums in respect to C++ and the struggle to comprehend what's happening - this shows that they are on extremely very shaky ground once they leave the "guiding hand and comfort" of a la Java in respect to garbage collection, safety etc and other nuances of Java that they have got used to!

    Do yourself a big favour and I'll promise you, you will not regret it, start out in C first and you will look back on it in a few years time realizing I was right and laugh at those who are using Java as a "safety cushion" behind the black arts underneath the bonnet....

    Linux is written in C, Gnome is written in C, Windows drivers are written in C, kernels of most OS's are C based, Microsoft Word is C++, Paintbrush is C++, Gimp is a mixture of C and C++, Enlightenment is C, X server is C, even right down to the handset, is written in C, it's everywhere but you do not see (or should that be C) it!!!!


  • Registered Users, Registered Users 2 Posts: 1,481 ✭✭✭satchmo


    Bjarne Stroustrup, inventor of C++, agrees that starting with C is a bad idea.
    Q: I don't know C or C++, should I learn C first?
    A: No. Learn C++ first. The C subset of C++ is easier to learn for C/C++ novices and easier to use than C itself. The reason is that C++ provides better guarantees than C (stronger type checking). In addition, C++ provides many minor features, such as the `new' operator, that are notationally more convenient and less error-prone than their C alternatives. Thus, if you plan to learn C and C++ (or just C++) you shouldn't take the detour through C. To use C well, you need to know tricks and techniques that aren't anywhere near as important or common in C++ as they are in C. Good C textbooks tends (reasonably enough) to emphasize the techniques that you will need for completing major projects in C. Good C++ textbooks, on the other hand, emphasizes techniques and features that lead to the use of C++ for data abstraction and object-oriented programming. Knowing the C++ constructs, their (lower-level) C alternatives are trivially learned (if necessary).


  • Closed Accounts Posts: 1,397 ✭✭✭Herbal Deity


    mach1982 wrote: »
    It called C++ as in C plus extras, it added object ordinate elements to C. therefore you if knew C you know at least 70% of C++.
    That is wrong and misleading.

    "C++" is just a name, it's a hell of a lot more than C with object oriented elements tacked on, and yes it's backwards compatible with C, but the way you do things in both are often very different.


  • Closed Accounts Posts: 334 ✭✭Nemi


    I'm doing the FAS online course on Java at the moment. I think its advantage is just its accessibility if you're holding down a day job. Plus its also quite cheap - €120 -

    I previously worked in IT in the civil service, and have a cert in systems analysis, but never did much programming. My objective at the moment is to achieve some kind of professional qualification in programming.

    I'm finding the FAS course fine, but I'm glad that I got one of those 'Idiots' guides to Java out of the library first. Without that, I'd be missing the significance of the course material.

    The bits of this discussion that resonate with me is the need to study something about programming theory. I expect at the end of this course I'll be able to use Java in a 'monkey see, monkey do' kind of way, which will be more than I started with. But I think the next step will be to browse through some textbooks, to try to find one that covers general programming principles.

    Has anyone any views on the Open University's course? They tend to cost a lot; is it a case of you get what you pay for?


  • Registered Users, Registered Users 2 Posts: 7,893 ✭✭✭The_B_Man


    Hi folks,

    Hopefully I'm not off topic here but, since we're talking about C++, I'm hoping to get advice on an IDE or compiler. I've used Visual Studio 6 for V6 a good few years ago in college, and I've used the gcc compiler for command line C/Java. I also used DOS based Turbo C compilers as well and the Borland Windows based ones. I thought the command line gcc was good but missed the Turbo-C way of pressing F9, having the code compile, and popping up the output, or errors with line highlighting.

    Can someones recommend a similar compiler/environment for C++? Is there an IDE for gcc?


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 608 ✭✭✭t0mm13b


    Here is a linky for Code Blocks that might get you going. If you want to use C++ on Microsoft, you can download Microsoft Visual C++ Express edition for free...


  • Registered Users, Registered Users 2 Posts: 327 ✭✭sombaht


    NetBeans IDE is also available from Sun/Oracle and supports C/C++ as well as Java, Ruby, Python and a host of others. You will need a separate compiler for C/C++, but something like Cygwin works fairly well with it.

    Cheers,
    sombaht


  • Registered Users, Registered Users 2 Posts: 608 ✭✭✭t0mm13b


    sombaht wrote: »
    NetBeans IDE is also available from Sun/Oracle and supports C/C++ as well as Java, Ruby, Python and a host of others. You will need a separate compiler for C/C++, but something like Cygwin works fairly well with it.

    Cheers,
    sombaht

    Dear Gawd!!!! NetBeans.... :eek: well to be honest, cygwin is horrible, you will get a better chance by using Mingw as their compiler tool, and also, you can cross compile binaries targetting Mingw from Linux.... w00t w00+


  • Moderators, Technology & Internet Moderators Posts: 1,336 Mod ✭✭✭✭croo


    eclipse is popular with java developers but it will work just as well with c++

    but if I were just learning I think I'd keep it simple and use something like jedit.


  • Registered Users, Registered Users 2 Posts: 3,945 ✭✭✭Anima


    VS2010 is great if you can get your hands on it.


  • Registered Users, Registered Users 2 Posts: 327 ✭✭sombaht


    t0mm13b wrote: »
    Dear Gawd!!!! NetBeans.... :eek: well to be honest, cygwin is horrible, you will get a better chance by using Mingw as their compiler tool, and also, you can cross compile binaries targetting Mingw from Linux.... w00t w00+

    Well if you are developing in multiple languages, NetBeans is handy, one IDE for several languages. Cygwin doesn't have to be the compiler of choice, it can work just as well with any of the GNU compilers and GNU make. Plenty of choices out there.

    Cheers,
    sombaht


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 38 Shenlok


    +1 for VS2010, if you don't have access to the full version you can get the C++ Express edition for free on the VS website.


  • Closed Accounts Posts: 285 ✭✭Plebs


    sombaht wrote: »
    Well if you are developing in multiple languages, NetBeans is handy, one IDE for several languages. Cygwin doesn't have to be the compiler of choice, it can work just as well with any of the GNU compilers and GNU make. Plenty of choices out there.

    Indeed. And NetBeans is a stable product built by engineers. I wouldn't be so dismissive. Eclipse is a bit of a frankenstein of a beast (e.g. Window->preferences? Help->Add New Software Sources?) and in my experience, is slow and buggy.

    I prefer to use vim as much as possible, but I have recently had to use Java and find that an IDE is a must for Java. I use Eclipse, but I'd prefer something more light-weight and less buggy. Also, the plug-in interface is ridiculous.


  • Registered Users, Registered Users 2 Posts: 413 ✭✭noxqs


    Starting with Eclipse is a bit like beginning to learn how to ride a bike by hand assembling a delicate antique motorcycle.

    It is very confusing and it does not assist at all in understanding the basics of programming which is what is really required. Any editor that offers basic colors and debugging will suffice. Code::Blocks is good, VS is also good (but is also a very big and complex product).

    Overall I would never recommend C++ as a starting language. It is very complex and punishing to beginners who will have to understand datatypes and pointers and manage these before being able to write anything even remotely useful. This can be daunting.

    Python however I find can demonstrate the programming concepts so that understanding is created before worrying about low level nitty gritty.


  • Closed Accounts Posts: 4,564 ✭✭✭Naikon


    satchmo wrote: »
    Bjarne Stroustrup, inventor of C++, agrees that starting with C is a bad idea.

    I reckon the op should start with C, because procedural Algorithmic concepts are a good start for learning without throwing object orientation and associated concepts/ideas into
    the mix. Not that C++ forces you to conform to OO like Java, but C is a much smaller beast to master than C++. C++ is great, but you should have a strong justification for learning it.


  • Closed Accounts Posts: 4,564 ✭✭✭Naikon


    satchmo wrote: »
    I agree, learning C before C++ will only get you learning bad habits. Go straight to C++ - you should get your head wrapped around object oriented programming relatively early.

    I always recommend the tutorial at cplusplus.com, it's easy to follow, well structured, and covers the basics well. I don't see any point in buying a 60 quid book when there are so many tutorials out there on the web for free.

    What bad habits? You can't really compare them, because they are not even in the same league so to speak. C is still one of the best tools for systems programming/device drivers. Object Orientation is not the solution for everything. Apples with Oranges here I am afraid. Pick one which fits your needs. Each have their good and bad points.


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 9,579 ✭✭✭Webmonkey


    I guess things like using malloc/free instead of new/delete, printf/scanf instead of cout/cin.

    Anyways, if you want to learn C++ and have a good understanding of programming, give Accelerated C++ a go. It starts with C++ straight from the start. It uses STL straight from the beginning as well. It explains it further on more and more.

    I personally didn't see a problem learning C before C++. But everyone is different I guess.


Advertisement