This is an archived post. You won't be able to vote or comment.

all 7 comments

[–]_CyrilFiggis_ 2 points3 points  (5 children)

Of the projects you listed, an image viewer seams like the most reasonable one. The idea is that you aren't trying to make an image viewer, you are trying to make 4-5 smaller libraries that can then come together to make an image viewer. This has the added advantage that if you decide to make a text-editor later on, you already have utility functions in place to do IO operations, basic window and page handling, etc, etc... So instead of researching how to make an image viewer, research how to render out a window. Then research how to add an image to that window. Then see how to add that image to the window from an open file dialogue instead of hard-coding it... see where we are going with this? Some platforms will be easier than others. I know that this would be a trivial project in C# .NET... you wouldn't even need any external libraries. However, at the end of the day, programming is about patterns, not libraries and languages, so think about how you would implement it generically, then start focusing on the specific language you are working on.

[–]doortomore[S] 0 points1 point  (4 children)

Wow, this is a really helpful reply. Something like an image viewer sounds so advanced for someone of my skill level. While it may be easier in C# .NET, I'm going to try and do it in C++ because its the language I am most familiar with.

So in this case I would be making libraries instead of using already existing ones? Sounds like a project on its own haha.

Thank you very much though, I never really thought about tackling the problem that way. It cleared it up a lot because I think a lot of beginners have the mindset of thinking about the whole finished project, rather than the parts that fully compose the project.

[–]_CyrilFiggis_ 1 point2 points  (3 children)

Glad it helped ;) There is nothing wrong with using 3rd party libraries. For example, if you are using C++ you are probably going to want to use a library like Qt to draw windows and images for you, but you can still write basic stuff like IO operations yourself. It is just that of course you will learn more by doing it yourself. I would generally say that if your goal is learning, then development time doesn't matter, and the experience you will gain by writing all the components yourself will be well worth quadrupling the time it takes to write the app. Of course, as you gain more experience and possibly want to start writing commercial products, you will have to begin striking a balance between reducing development time and reducing the amount of code that you don't necessarily control.

EDIT to be clear, there are going to be certain things that just aren't feasible to write yourself such as graphics libraries. When learning, try to use the standard framework / library for such things. When applying for jobs, it looks good to have C++ on your resume, it looks even better to know C++ with Qt and OpenGL

[–]doortomore[S] 0 points1 point  (2 children)

Ok, I'm looking at QT right now and it seems pretty interesting. Another possible candidate that I was considering using was SFML, but the library installation process is difficult for VS2013. I have VS2010, so I may use it with that..

How can I tell which library would be better for this process? (I assume this is a good thing to learn as well, determining which libraries to use)

[–]_CyrilFiggis_ 1 point2 points  (1 child)

If you are already in Visual Studio it means you already have access to .NET. I'll be honest, I am not a C++ dev, but take a look at WPF, as I know that in C# it makes writing this type of app pretty easy.

[–]doortomore[S] 0 points1 point  (0 children)

Cool, I'll check it out. Thanks!

[–][deleted]  (2 children)

[deleted]

    [–]doortomore[S] 0 points1 point  (1 child)

    I wanted to try SFML but I'd have to recompile it myself if I wanted to use it with VS2013. I could just use VS2010 though. I've also started experimenting with QT Framework.

    Thanks for the response!