Thread: Theoretically speaking, how should this application be structured?

  1. #1
    Registered User
    Join Date
    Jul 2012
    Posts
    2

    Theoretically speaking, how should this application be structured?

    Hi all.

    I’m coming here as a complete beginner in C++, and what I need is not technical help in small details but rather a brief theoretical explanation about the most common methods to achieve the sort of application that I want. Please keep that in mind.

    I began self-learning with some “complete guide” book in C++. Practically so far, I know how to program simple input and output with variables and how to use some loops, although I’m still not so familiar with the latter. Theoretically, I know the basics of OOP; how each object is a stand-alone foundation with its functions and private data, and how objects contact and exchange information with one another.

    Right now, I have a clear image of a PC application that I want to create, and any hints of the methods that I have to study and use are appreciated

    The application I want to create consists of 3 parts; a website, a user client, and both are connected to a bunch of online databases, fairly similar to the Steam Community.

    The Steam Community website contains databases of users and user groups. Each group, which I approach as a database entry, has various sub-functions and unique data, including a message board, a news board as well as an event scheduling function and an archive for past events. Each scheduled event contains various values such as the date and description and server address and such. This is an example group. All of these are examples of the data hierarchy complexity that I need.

    Users use functions and edit data of groups through the website’s interface, and the Steam user client which is actually a web browser that accesses the website.

    However, instead of the client’s application being a web-browser of the website, I want to make an actual clone of the my website where the users can login, view and directly edit the data and use the functions that they have permission to access in the databases.

    Please note that none of the website or databases have been created as of yet, and that this discussion revolves around the user client but not the website. I am still at the very beginning.

    So, what am I going to use? What kinds of databases are eligible? Can a possible program structure be theoretically explained? What articles can help me? What C++ elements should I focus on in my study?

    Any hints are appreciated. Thank you in advance.

  2. #2
    C++ Witch laserlight's Avatar
    Join Date
    Oct 2003
    Location
    Singapore
    Posts
    28,413
    Quote Originally Posted by SinanDira
    However, instead of the client’s application being a web-browser of the website, I want to make an actual clone of the my website where the users can login, view and directly edit the data and use the functions that they have permission to access in the databases.
    The approach that I might take would be to expose an API (e.g., REST style), then write a GUI application that communicates with the server via this API. On the other hand, if you're going to have a website with the same functionality anyway, making the website function like a desktop application (e.g., GMail's attempt to act like a desktop email client) using AJAX techniques and such may be the way to go. (Not that you cannot provide such an API in that case, of course, depending on your requirements.)

    Quote Originally Posted by SinanDira
    So, what am I going to use? What kinds of databases are eligible? Can a possible program structure be theoretically explained? What articles can help me? What C++ elements should I focus on in my study?
    Since you are "a complete beginner in C++", C++ is a wrong programming language to use here, unless you have a team of competent C++ programmers, in which case they should be the ones advising you.

    Quote Originally Posted by SinanDira
    I began self-learning with some "complete guide" book in C++. Practically so far, I know how to program simple input and output with variables and how to use some loops, although I’m still not so familiar with the latter. Theoretically, I know the basics of OOP; how each object is a stand-alone foundation with its functions and private data, and how objects contact and exchange information with one another.
    From this, I get the impression that not only are you a complete beginner in C++, but you are a complete beginner to programming in general. Furthermore, it also sounds like you don't have any experience with databases other than as an end-user. If so, realistically your best bet is to find at least one technically skilled person who is sold on your idea and wants to work with you to develop this. Things like program structure should be discussed with this "technical co-founder".
    Quote Originally Posted by Bjarne Stroustrup (2000-10-14)
    I get maybe two dozen requests for help with some sort of programming or design problem every day. Most have more sense than to send me hundreds of lines of code. If they do, I ask them to find the smallest example that exhibits the problem and send me that. Mostly, they then find the error themselves. "Finding the smallest program that demonstrates the error" is a powerful debugging tool.
    Look up a C++ Reference and learn How To Ask Questions The Smart Way

  3. #3
    Algorithm Dissector iMalc's Avatar
    Join Date
    Dec 2005
    Location
    New Zealand
    Posts
    6,318
    In what kind of time frame are you expecting to be competent enough to create this PC application you dream of?
    1 year?
    2 years?
    3 years?
    5 years?
    Let me give you a hint: Realistically speaking, you can probably cross off the first two of those answers. Some people go through 3-4 year university courses and still can't program very well in the real world.

    Thinking that you can start with something this ambitious, is a little on the naive side. Space exploration didn't start with putting a man on the moon.
    "Baby steps" man, "baby steps".
    Last edited by iMalc; 07-23-2012 at 01:01 AM.
    My homepage
    Advice: Take only as directed - If symptoms persist, please see your debugger

    Linus Torvalds: "But it clearly is the only right way. The fact that everybody else does it some other way only means that they are wrong"

  4. #4
    Registered User
    Join Date
    Jul 2012
    Posts
    2
    Hey guys. Thank you for your time and answers to me. First of all, I have to clarify a few things that I forgot to share. You are completely right about how I’m dreaming big while still at the very bottom of the mountain without any climbing gear, but 2 facts have to do with that.

    Fact 1: This application is a long term project without a specific time frame. I hope for it to be possible to complete in a year or two, and I’m open for hearing your estimates. As a long term project, this is by no way my next project or anything, I’m already expecting to write at least a few times its code while learning, and I will end up making several serious or learning-intended projects.

    Fact 2: As of yet, I’m enjoying my programming learning and I am willing to continue taking it seriously, no matter how long it takes to accomplish this application.

    Also, this application is completely a personal project, and I am not in a condition to pay for it, at least for the meantime. I have to admit though, you make it seem to be a terrible job consisting of at least a few tens of thousands of code lines. I imagined much less.

    Quote Originally Posted by laserlight View Post
    Since you are "a complete beginner in C++", C++ is a wrong programming language to use here

    This advice brings up some questions by itself. Do you mean that C++ is not the right language for this sort of application or that it’s not the place to start for a beginner? And what’s your advice regarding that?

    Quote Originally Posted by laserlight View Post
    From this, I get the impression that not only are you a complete beginner in C++, but you are a complete beginner to programming in general.

    Hmmm, let’s see... Back in school days, I made some advancement in Liberty Basic, and I remember making some user choices with “goto” and loops and such. I have reached GUI programming in my self-learning but never applied it. That’s everything beside my recent, yet very basic C++ knowledge.

    Quote Originally Posted by laserlight View Post
    Furthermore, it also sounds like you don't have any experience with databases other than as an end-user.

    Well, MS Office Access; the basics... :P

    It could seem that I’m dumb, but as I have just explained, I’m on a slow and calm journey, and I’m willing to keep it consistent, and I am totally aware that I’m still at the very beginning.

    You can consider what you’re doing as putting me on the right road! One could argue that it's wrong for someone in my level to ask here, but it's actually the right place. To put it clearly, instead of being in the maze I'm in on my own, learning things that relate and don't relate to my goals, I need an expert to show me some possible routes from an aerial view, so I would know where to go, without getting into low technical detail. This is the purpose of this thread.

    Quote Originally Posted by laserlight View Post
    The approach that I might take would be to expose an API (e.g., REST style), then write a GUI application that communicates with the server via this API. On the other hand, if you're going to have a website with the same functionality anyway, making the website function like a desktop application (e.g., GMail's attempt to act like a desktop email client) using AJAX techniques and such may be the way to go. (Not that you cannot provide such an API in that case, of course, depending on your requirements.)

    Okay, so down to the actual matter, laserlight has mentioned various things to educate myself about! It’ll take me some time to grasp these techniques and give feedback. Your information is pretty much appreciated, thank you!

    Now I am beginning to have an idea, while I actually didn’t have an idea at first. If you want to contribute anything more, it’d be very much appreciated, guys.

    Also, if anyone is in need, I can maybe pay you back with some drawing lessons, since I’m good at that. :P
    Last edited by SinanDira; 07-23-2012 at 02:44 AM.

  5. #5
    C++ Witch laserlight's Avatar
    Join Date
    Oct 2003
    Location
    Singapore
    Posts
    28,413
    Quote Originally Posted by SinanDira
    This application is a long term project without a specific time frame. I hope for it to be possible to complete in a year or two, and I’m open for hearing your estimates.
    It would be foolish of me to make an estimate when I don't know how skilled you are or will be, who else may be involved in development, and when I only have a vague idea of the requirements. Not to discourage you, but it is a fact that many software projects fail: yours might fail too (some of my pet projects certainly have, or have been relegated to "to be continued" status indefinitely).

    Quote Originally Posted by SinanDira
    Fact 2: As of yet, I’m enjoying my programming learning and I am willing to continue taking it seriously, no matter how long it takes to accomplish this application.
    That's good to hear

    Quote Originally Posted by SinanDira
    Do you mean that C++ is not the right language for this sort of application or that it’s not the place to start for a beginner? And what’s your advice regarding that?
    If your intention was to head straight for a real world project, then C++ is not the place to start for a beginner. You would take too long to become competent in C++, and that's before you learn the libraries for networking and GUI. Or, you would short cut through the learning process, then botch your project's implementation. Now that I know that you don't have a real time frame, this isn't a concern.

    Plus I had in mind the idea that you're going to have a website with the functionality anyway, so having a better website would provide more value for development time (and user experience) than coming up with a separate desktop client. From what I see, where native apps for a website are concerned, they tend to be in the mobile computing area these days rather than for a desktop computer. While you could still use C++ on the server, this is not a common approach so you would be making life more difficult for you in terms of finding resources to learn how to do it.

    Of course, if you really want to do this with C++ no matter what, then go ahead. It can be done.
    Quote Originally Posted by Bjarne Stroustrup (2000-10-14)
    I get maybe two dozen requests for help with some sort of programming or design problem every day. Most have more sense than to send me hundreds of lines of code. If they do, I ask them to find the smallest example that exhibits the problem and send me that. Mostly, they then find the error themselves. "Finding the smallest program that demonstrates the error" is a powerful debugging tool.
    Look up a C++ Reference and learn How To Ask Questions The Smart Way

  6. #6
    Master Apprentice phantomotap's Avatar
    Join Date
    Jan 2008
    Posts
    5,108
    O_o

    There is no "application" here; you are describing a service and multiple applications.

    If you use existing tools, languages appropriate to the individual components, and frameworks designed to implement database driven facilities you probably could do this in a year, but you'd probably learn nothing beyond how to "bang out" such a system with those exact tools, languages, and frameworks.

    The question is, what do you want more? Do you want to learn structure, design, and programming? Or do you just want to get this system running?

    You say "this discussion revolves around the user client but not the website" which is somewhat frightening in imparting exactly how far over your head you've dived.

    Soma

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Speaking of usernames...
    By medievalelks in forum A Brief History of Cprogramming.com
    Replies: 66
    Last Post: 06-05-2008, 04:24 PM
  2. Where to begin, graphically speaking?
    By Sennet in forum Game Programming
    Replies: 14
    Last Post: 01-22-2006, 02:28 AM
  3. Visual Studio is speaking German!
    By PJYelton in forum A Brief History of Cprogramming.com
    Replies: 5
    Last Post: 09-30-2005, 12:19 AM
  4. speaking
    By sreetvert83 in forum C++ Programming
    Replies: 2
    Last Post: 05-26-2004, 06:12 PM
  5. English Speaking People
    By golfinguy4 in forum A Brief History of Cprogramming.com
    Replies: 20
    Last Post: 04-13-2002, 08:25 AM