C++ Programing : Principles and Practice (Enough ?)

Discussion in 'App Development' started by K-Pia, Mar 11, 2016.

  1. Everything you can do in IB's Java API you can do in C++. Their API isn't magic; it's just a function call layer on top of a sockets interface.

    Regarding your original post, learning a programming is only like 5% of what you need to know to design software. Maybe another 10% comes from CS design classes. The rest comes from innate problem solving skills and years of experience. Problem solving skills can't be taught in a class or read in a book. It's a muscle that must be exercised over a long time.
     
    Last edited: Mar 11, 2016
    #11     Mar 11, 2016
    bellman, botpro and K-Pia like this.
  2. 2rosy

    2rosy

    #12     Mar 11, 2016
    jj1111 and K-Pia like this.
  3. botpro

    botpro

    C++ is "my" programming language of choice & preference, so I use the IB C++ API. But am not finished yet with the connection.
    Like stevegee58 has mentioned, I think there is nothing missing in the IB C++ API compared to the IB Java and C# API, but I must admit I haven't studied the Java and C# APIs; they all look similar in functionality and capability.

    C++ is IMO the most powerful language, and is also very fast.
    If you intend to use it professionally or for high speed things then you can't do anything wrong by choosing C++.
    But, be aware that you will need much time to be perfect, so you should make a good decision for many years to come.
    Here's an overview of what makes up C++: http://www.learncpp.com/
    Regarding complexity: it is similar with Java, as well with C#. So, my advice go with the industry standard, which is C++.

    Don't be fooled by graphical stuff for example MS propagates, ie. the "visual" stuff.
    Professionals work at the commandline of their terminals, with such text editors like vi/vim, emacs, or joe etc...

    Of course there are also comfortable frameworks like the said Visual Studio, Eclipse, CodeBlocks or something that, and some more...
    I tried most of them and in the end decided that I don't need such gigantic dev environments.
    A simple text editor, commandline, man pages, the web, makefile usage, version control system, and some other handy small tools are fully sufficient...
    Everyone has his own style, methods, environment and tools, and such individuality and plurality is IMO good as not all people are equal in their tastes, efforts, skills, needs and requirements etc.

    I like and prefer especially the GNU C++ compiler called g++, which is freely available under Linux.
    As said I'm working under Linux, but if necessary I can also use the Microsoft C++ compiler (the latest I have is vs2008, yes it's very old ;-).
    I'm also a so called "Microsoft Certified Solution Developer" (MCSD) with speciality in C++ and SQL DB programming.
     
    Last edited: Mar 11, 2016
    #13     Mar 11, 2016
    K-Pia likes this.
  4. K-Pia

    K-Pia

    That's why I switched to linux. I don't have a desktop environment but only a window manager (i3wm). Almost all program are cli based. I wanted to learn bash, linux and cyber forensic (Aha) but first I am going to learn C++ and Mathematica because trading is my priority. I am a discretionary trader but I think there is value to be added by knowing to program. I use G++ -std=C++11 to compile .cpp files. I found ProjectEuler.net to test my Programing and maths skills. But I also toy about trading. However I feel like there's still a lot to learn. That's why I dive deeper into programing.
     
    Last edited: Mar 11, 2016
    #14     Mar 11, 2016
    botpro likes this.
  5. Sig

    Sig

    No question that you can't go wrong with C++ for the power and speed of the language. In my experience though there's a very real possibility of giving up on C++ because there's so much to learn before you can even make yourself dangerous. I ended up going with the easier language I was already comfortable in, knowing that it was inferior to C++ but also knowing that I'd get my project done in a bounded amount of time and completely understand what was going on under the hood. I'm not advocating my route in call cases. If you have the time and dedication I'd definitely stick with C++ because as you mentioned it's worth knowing for its own sake. Just something to keep in mind if you're doing this in your scarce free time.
     
    #15     Mar 11, 2016
    K-Pia likes this.
  6. K-Pia

    K-Pia

    My life is all about trading. So if C++ can help me achieve a better performance. Then I'll do it. As you said, it's possible to make it with another language. I thought about C, Python, R or even Julia . But I've got the time to learn. So I've picked C++ in addition to Mathematica because I can't go wrong with them. Even if I don't plan to trade HTF. Speed bottlenecks could still show up. Thanks to you guys. Got to be bold enough to keep learning !
     
    #16     Mar 11, 2016
  7. spacewiz

    spacewiz

    If you are just starting : C++ is not a good choice. While it definitely has it's strengths and is still popular - it's an outdated language and one of the hardest to learn. Productivity is much lower even for seasoned programmers because you have to spend a lot of time dealing with low-level "boilerplate", memory management, etc.. and programs tend to have more bugs.

    I would suggest starting with more a modern language such as Java (IMO best if you are planning to use IB APIs), or C# if you are only planning to develop on/for Windows.
     
    #17     Mar 11, 2016
  8. Simples

    Simples

    Think of it in trading terms: Why shouldn't you trade 1 second bars? It's the equivalent to C++.

    I learnt C++ myself during my teens. After accumulating computing knowledge for 30+ years, my first question would be what do you need it for? Myself, I use whatever tool makes my job easiest. It both depend on myself, my own knowledge, but also on availability and costs of various tools.

    Do you absolutely need access to raw speed and low-level access, ie. do you have specific requirements for such? If not, it might pay off to investigate more options earlier than later.

    I try to avoid imperative programming, but ruby has served me well when I need to automate and the language has a clean nice syntax, although the lack of static types can be harsh to newbies. I hear good things about Python too. Don't underestimate the power of prototyping, and then migrating to something else when the needs are clearer. Although, it's hard to realize the best course of action when you have no idea - kind of like trading itself. RR can be used in many aspects of life and learning.
     
    #18     Mar 11, 2016
  9. botpro

    botpro

    C++ an outdated language? I have to laugh!
    It is an old language, which shows it is very popular, succesful, demanded, and very active;
    the latest standards are of 2011 and 2014, currently working on the standard that is due 2017.

    C++ is not like Visual Basic which is aimed at novices, C++ is rather for professionals and the industry, not for hobbyist programmers or hobbyist projects,
    it is intended for serious work.

    Hmm. soon or later most who went first to Java or C# later switched to C++... So, don't waste your time with multiple languages.
    Nowadays the libraries of all languages are gigantic, so it's a question of making a wise decision and investment one has to do...
     
    Last edited: Mar 11, 2016
    #19     Mar 11, 2016
  10. jj1111

    jj1111

    #20     Mar 11, 2016