Lost in the world of software development

Whether you're a newbie or an experienced programmer, any questions, help, or just talk of any language will be welcomed here.

Moderator: Coders of Rage

User avatar
Kyosaur
Chaos Rift Cool Newbie
Chaos Rift Cool Newbie
Posts: 78
Joined: Tue Jul 13, 2010 2:00 am
Favorite Gaming Platforms: PS2,PS3,NDS
Programming Language of Choice: C++

Lost in the world of software development

Post by Kyosaur »

Im currently at an intersection when it comes to programming, and i have to pick a direction. Sadly this direction isnt as easy as picking one of two graphics libraries, i have multiple choices that lead to more intersections, and that just confuses me even more! I've been stuck for a while, and i've put it off long enough, its time to make a decision.

To make this more fit for my situation im going to give a little bio about myself.

Bio: Im 19 years old, and currently use C++ as my main programming language. Im not exactly sure what i want to do with my life, only that i want it to involve programming. At the moment im really only comfortable putting one thing on my resume and that's a 32bit typeless scripting language called PAWN. Im OK in C++, i have a strong understanding of the language, but no GUI library/API to make any of that of use (hence me not being comfortable enough to put it on my future resume). Im currently leaning towards software development (and/or engineering - i love making kick ass designs!) so not having any GUI lib/api under my belt is a big deal; I do however have SQL experience (Mostly the basic statements: SELECT, INSERT, UPDATE, CREATE, DELETE, DROP, etc...).
[/EndBoringBio]


Now here is where the root of my confusion begins. Since i think it will be to difficult to explain, im just going to make a list to try and demonstrate instead.
  • C++ - People keep telling my its not wise to stick with this language if my goal is software development. They tell me JAVA and C# are the industry standards, and encourage me to learn those instead. I REALLY like c++ and would like to stick with it if at all possible. I like that i can code ANYTHING i want with it, and chose HOW i code it (<3 multiparadigm languages). The speed and power are the main reasons i love this language though.

    Paths available with C++ (pros and cons):
    • - Qt
      • Pros:
        • 1.) No need to worry about platforms, its completely cross-platform. This saves a ton of time and money to companies.

          2.) If i learn Qt for C++, i can learn JAVA and add it to my resume since there is a Qt port for JAVA! Learning java itself its that big of a deal, as im already comfortable with object oriented programming.

          3.) Qt has a GUI builder that comes with their IDE. Although the IDE is terrible in my opinion, the creator saves tons of time and makes life very easy.
        Cons:
        • 1.) Since the goal of Qt is to keep everything platform independent i'd have to use a TON of libraries to keep code platform independent-since i cant just use Win32 functions.

          2.) Companies might not be fond of paying for this library (or using other people's work in general?). That inclines people to use other methods - meaning less employers?
    - Win32 API
    • Pros:
      • 1.) Since platform independence isnt a factor here, i can use the vast amount of functions that comes with the API (limiting the amount of third party libraries i have to use).

        2.) No fee to keep your source code private.

        3.) This makes learning assembly less of a hassle. I could make full fledged programs instead of just using inline assembly in my C++ programs (this also gives me another language to add, if i ever get a good enough understand of assembly-atm its just an interest).
      Cons:
      • 1.) For some unfathomable reason the API uses Hungarian notation. This makes the code incredibly ugly for absolutely no reason (especially with modern IDE's).

        2.) Employees will possibly have to hire other coders if they want to port their stuff, or will be JUST have to developing for windows (i assume they'd JUST develop for windows).
JAVA - Im not to big on JAVA to be quite honest. I find it extremely limiting as im not able to pick my style of programming (Some times procedural just makes more sense than OOP!). Also i feel as if i learn java and get hired as a java programmer, i'll have no need for c++, which is very sad (i love the language). The only thing i like about java is that it multi-platform (no need to recompile due to the JVM, just compile and distribute). There are a ton of places looking for JAVA programmers, having it on my resume makes me feel comfortable- even though i would hate being a java coder.
  • - Swing
    • Pros:
      • 1.) The great thing about swing is that its all inside the language! No need for any third party libraries at all.

        2.) There's probably a huge market out there for swing coders due to the above.
    • Cons:
      • 1.) Swing seems very messy and unorganized. I think this is due to its age. Having events in your application is seriously frustrating due to this.
  • - Qt
    • Pros:
      • 1.) Qt seems to be a very nice alternative to swing. It seems more organized and handles everything with a more modern approach.

        2.) If i learn Qt instead of Swing, thats sort of killing two birds with one stone. I can also list myself as a C++ programmer using the Qt library.
    • Cons:
      • 1.) JAVA is already significantly slower than C++, using Qt means my applications will be even slower since Qt for java is a wrapper.

        2.) There's a fee to keep your source private.

Which route do you guys think is the best one for me to take? It seems every route has a serious down side with it :\.
Image
User avatar
Falco Girgis
Elysian Shadows Team
Elysian Shadows Team
Posts: 10294
Joined: Thu May 20, 2004 2:04 pm
Current Project: Elysian Shadows
Favorite Gaming Platforms: Dreamcast, SNES, NES
Programming Language of Choice: C/++
Location: Studio Vorbis, AL
Contact:

Re: Lost in the world of software development

Post by Falco Girgis »

Uh, I mean no offense, but none of your CONS for QT were valid.
Kyosaur wrote:1.) Since the goal of Qt is to keep everything platform independent i'd have to use a TON of libraries to keep code platform independent-since i cant just use Win32 functions.
?
QT is platform independent. Every function it offers will run identically on each platform. If you use QT, you don't need a single additional library.
Kyosaur wrote:2.) Companies might not be fond of paying for this library (or using other people's work in general?). That inclines people to use other methods - meaning less employers?
I don't understand what you're trying to say. QT is covered under the LGPL, meaning that it's free to use commercially provided that you don't fuck with the source code (and if you do, it must be released).

We use QT quite a bit at work (as do tons of other companies) for proprietary products... We're actually using it to power the software running an IP phone we've designed from ground-up.

My C/C++/QT experience with my senior design project is actually what landed me my first legitimate software engineering job.

I have dabbled in both Java and C#. I'm very experienced in QT. Everything that I've ever pursued in QT has been a pleasure. It offers the power and speed of C++ (you can still even link against C libraries and drop to the assembly level if you need to) with the high-level constructs that make writing software in Java/C# appealing. It's honestly the best of both worlds, imo.
User avatar
Kyosaur
Chaos Rift Cool Newbie
Chaos Rift Cool Newbie
Posts: 78
Joined: Tue Jul 13, 2010 2:00 am
Favorite Gaming Platforms: PS2,PS3,NDS
Programming Language of Choice: C++

Re: Lost in the world of software development

Post by Kyosaur »

GyroVorbis wrote:Uh, I mean no offense, but none of your CONS for QT were valid.
Kyosaur wrote:1.) Since the goal of Qt is to keep everything platform independent i'd have to use a TON of libraries to keep code platform independent-since i cant just use Win32 functions.
?
QT is platform independent. Every function it offers will run identically on each platform. If you use QT, you don't need a single additional library.

Kyosaur wrote:2.) Companies might not be fond of paying for this library (or using other people's work in general?). That inclines people to use other methods - meaning less employers?
I don't understand what you're trying to say. QT is covered under the LGPL, meaning that it's free to use commercially provided that you don't fuck with the source code (and if you do, it must be released).

We use QT quite a bit at work (as do tons of other companies) for proprietary products... We're actually using it to power the software running an IP phone we've designed from ground-up.

My C/C++/QT experience with my senior design project is actually what landed me my first legitimate software engineering job.

I have dabbled in both Java and C#. I'm very experienced in QT. Everything that I've ever pursued in QT has been a pleasure. It offers the power and speed of C++ (you can still even link against C libraries and drop to the assembly level if you need to) with the high-level constructs that make writing software in Java/C# appealing. It's honestly the best of both worlds, imo.
1.) Sorry i wasnt as clear as i could've been. I wasnt referring to the UI side of things, i was referring to WHAT the code does. Since i cant use any window specific functions (which to be honest is all i know - and even that is limited) i'd have to use alot of libraries in order to keep MY code multi-platform (not sure how companies view this, i assume its not desirable).


2.) Oh now thats a problem on my side, i misunderstood the licenses (been ages since i've read it).

Honestly i feel you on that. Im very interested in Qt, im just worried about maintaining cross compatibility with MY code like i said.
Image
User avatar
Falco Girgis
Elysian Shadows Team
Elysian Shadows Team
Posts: 10294
Joined: Thu May 20, 2004 2:04 pm
Current Project: Elysian Shadows
Favorite Gaming Platforms: Dreamcast, SNES, NES
Programming Language of Choice: C/++
Location: Studio Vorbis, AL
Contact:

Re: Lost in the world of software development

Post by Falco Girgis »

Kyosaur wrote:1.) Sorry i wasnt as clear as i could've been. I wasnt referring to the UI side of things, i was referring to WHAT the code does. Since i cant use any window specific functions (which to be honest is all i know - and even that is limited) i'd have to use alot of libraries in order to keep MY code multi-platform (not sure how companies view this, i assume its not desirable).
No, you wouldn't. QT literally does everything you would ever need to do for you and in a platform independent manner. You won't need a single additional library other than the QT framework 99% of the time.

I don't really think you understand how QT works. The entire point is that you DON'T need to use anything additional or need to worry about things being cross-platform. If you use the built-in QT functionality, it's handled for you. That's the entire point.
User avatar
Kyosaur
Chaos Rift Cool Newbie
Chaos Rift Cool Newbie
Posts: 78
Joined: Tue Jul 13, 2010 2:00 am
Favorite Gaming Platforms: PS2,PS3,NDS
Programming Language of Choice: C++

Re: Lost in the world of software development

Post by Kyosaur »

GyroVorbis wrote:
Kyosaur wrote:1.) Sorry i wasnt as clear as i could've been. I wasnt referring to the UI side of things, i was referring to WHAT the code does. Since i cant use any window specific functions (which to be honest is all i know - and even that is limited) i'd have to use alot of libraries in order to keep MY code multi-platform (not sure how companies view this, i assume its not desirable).
No, you wouldn't. QT literally does everything you would ever need to do for you and in a platform independent manner. You won't need a single additional library other than the QT framework 99% of the time.

I don't really think you understand how QT works. The entire point is that you DON'T need to use anything additional or need to worry about things being cross-platform. If you use the built-in QT functionality, it's handled for you. That's the entire point.
Oh, that is fantastic! I thought it was a framework that just handled the UI side of things (with events for said UI controls). That makes this decision VERY easy!

Honestly i read the about section on Qt, and looked at some code examples and thats about it. I havent played with it at all, so i was unaware that it did more than just UI related things. Thanks for taking the time to respond, now choosing Qt is honestly the only logical choice :D.
Image
User avatar
short
ES Beta Backer
ES Beta Backer
Posts: 548
Joined: Thu Apr 30, 2009 2:22 am
Current Project: c++, c
Favorite Gaming Platforms: SNES, PS2, SNES, SNES, PC NES
Programming Language of Choice: c, c++
Location: Oregon, US

Re: Lost in the world of software development

Post by short »

Kyosaur wrote: Oh, that is fantastic! I thought it was a framework that just handled the UI side of things (with events for said UI controls). That makes this decision VERY easy!

Honestly i read the about section on Qt, and looked at some code examples and thats about it. I havent played with it at all, so i was unaware that it did more than just UI related things. Thanks for taking the time to respond, now choosing Qt is honestly the only logical choice :D.
As an example, I wrote an entire video playing application for my senior design project in Qt, for a mobile device. Everything from reading the .wmv file to displaying it on the screen (they even have libraries that take care of all that, but that wouldn't be much a senior project, would it?))

Qt is powerful.
My github repository contains the project I am currently working on,
link: https://github.com/bjadamson
User avatar
ismetteren
Chaos Rift Junior
Chaos Rift Junior
Posts: 276
Joined: Mon Jul 21, 2008 4:13 pm

Re: Lost in the world of software development

Post by ismetteren »

Kyosaur wrote:Im currently at an intersection when it comes to programming, and i have to pick a direction. Sadly this direction isnt as easy as picking one of two graphics libraries, i have multiple choices that lead to more intersections, and that just confuses me even more! I've been stuck for a while, and i've put it off long enough, its time to make a decision.

To make this more fit for my situation im going to give a little bio about myself.

Bio: Im 19 years old, and currently use C++ as my main programming language. Im not exactly sure what i want to do with my life, only that i want it to involve programming. At the moment im really only comfortable putting one thing on my resume and that's a 32bit typeless scripting language called PAWN. Im OK in C++, i have a strong understanding of the language, but no GUI library/API to make any of that of use (hence me not being comfortable enough to put it on my future resume). Im currently leaning towards software development (and/or engineering - i love making kick ass designs!) so not having any GUI lib/api under my belt is a big deal; I do however have SQL experience (Mostly the basic statements: SELECT, INSERT, UPDATE, CREATE, DELETE, DROP, etc...).
[/EndBoringBio]
I don't know how far you are in the education system and how stuff works where you are from, but if you aren't on university level, then what about just taking it a little easy. To be honest I'm not really an expert when it comes to this(since there's still a few years until I'll start on a tertiary education) but I'm quite sure the idea is that you're supposed to learn stuff while you are there, and not before. Off course having some experience with different stuff is always good, the more the better, so just play around with a lot of different stuff. Something that you find interesting so you can keep the motivation.

And if you are really good at programming, then learning a GUI library shouldn't be that big of a deal, especially if you already have experience with one in a similar language. I haven't used Qt myself, but i know it's quite comprehensive. That doesn't mean that if you decide to learn Qt now you have to stick with it the rest of your life. Knowing several different GUI libraries for different languages is possible.

As I said earlier, I'm not talking from experience, just from how i think it is(where i live), so I might be completely off :)
Image ImageImage Image
User avatar
Falco Girgis
Elysian Shadows Team
Elysian Shadows Team
Posts: 10294
Joined: Thu May 20, 2004 2:04 pm
Current Project: Elysian Shadows
Favorite Gaming Platforms: Dreamcast, SNES, NES
Programming Language of Choice: C/++
Location: Studio Vorbis, AL
Contact:

Re: Lost in the world of software development

Post by Falco Girgis »

Pft. DON'T take it easy on yourself. Don't rely on school to teach you things (because it won't teach you a tenth of what you want to learn). Don't ever stop pushing or fighting to better yourself when it comes to your potential. There is nothing nobler than striving to be better. Be your own teacher and take a proactive stance on your education. That's the only way to make it in a field as large as this one.
User avatar
Falco Girgis
Elysian Shadows Team
Elysian Shadows Team
Posts: 10294
Joined: Thu May 20, 2004 2:04 pm
Current Project: Elysian Shadows
Favorite Gaming Platforms: Dreamcast, SNES, NES
Programming Language of Choice: C/++
Location: Studio Vorbis, AL
Contact:

Re: Lost in the world of software development

Post by Falco Girgis »

I also did the entirety of my senior design project in QT (which also landed me a job as a software engineer).

We built a Lunar rover software development suite to add semi-autonomy to existing rovers. It consisted of two pieces of software. A host (running on the rover) and an OCU (which was built out of the Elysian Shadows Toolkit serving as a remote host). It was heavily multithreaded, used the shit out of TCP/UDP sockets, streamed video and sensor input data between the two, and ran on my Macbook pro, Windows, and Ubuntu Linux (and fuck knows what else).

Many of the sensor drivers that I was interfacing with had standalone C libraries that I had to link against and utilize within a QT paradigm.
User avatar
xx6heartless6xx
Chaos Rift Cool Newbie
Chaos Rift Cool Newbie
Posts: 80
Joined: Wed Feb 02, 2011 9:42 pm

Re: Lost in the world of software development

Post by xx6heartless6xx »

I currently have a VERY simple tile level editor. I want to add buttons and drop down menus, etc and Qt seems like a pretty good application to create a good GUI with.

How is the process switching to using Qt? Would I need to completely rewrite my code in Qt using their functions?
User avatar
Falco Girgis
Elysian Shadows Team
Elysian Shadows Team
Posts: 10294
Joined: Thu May 20, 2004 2:04 pm
Current Project: Elysian Shadows
Favorite Gaming Platforms: Dreamcast, SNES, NES
Programming Language of Choice: C/++
Location: Studio Vorbis, AL
Contact:

Re: Lost in the world of software development

Post by Falco Girgis »

xx6heartless6xx wrote:I currently have a VERY simple tile level editor. I want to add buttons and drop down menus, etc and Qt seems like a pretty good application to create a good GUI with.

How is the process switching to using Qt? Would I need to completely rewrite my code in Qt using their functions?
Nah, not really. It's not like you can't still use all of the C and C++ standard libraries. Those are cross-platform by nature. It's just the SDL/Allegro/OpenGL parts that are going to need to transition to the QT framework (I don't know what you're currently using). QT even supports OpenGL-based widgets, so even that may not have to change.
User avatar
Kyosaur
Chaos Rift Cool Newbie
Chaos Rift Cool Newbie
Posts: 78
Joined: Tue Jul 13, 2010 2:00 am
Favorite Gaming Platforms: PS2,PS3,NDS
Programming Language of Choice: C++

Re: Lost in the world of software development

Post by Kyosaur »

ismetteren wrote:
Kyosaur wrote:Im currently at an intersection when it comes to programming, and i have to pick a direction. Sadly this direction isnt as easy as picking one of two graphics libraries, i have multiple choices that lead to more intersections, and that just confuses me even more! I've been stuck for a while, and i've put it off long enough, its time to make a decision.

To make this more fit for my situation im going to give a little bio about myself.

Bio: Im 19 years old, and currently use C++ as my main programming language. Im not exactly sure what i want to do with my life, only that i want it to involve programming. At the moment im really only comfortable putting one thing on my resume and that's a 32bit typeless scripting language called PAWN. Im OK in C++, i have a strong understanding of the language, but no GUI library/API to make any of that of use (hence me not being comfortable enough to put it on my future resume). Im currently leaning towards software development (and/or engineering - i love making kick ass designs!) so not having any GUI lib/api under my belt is a big deal; I do however have SQL experience (Mostly the basic statements: SELECT, INSERT, UPDATE, CREATE, DELETE, DROP, etc...).
[/EndBoringBio]
I don't know how far you are in the education system and how stuff works where you are from, but if you aren't on university level, then what about just taking it a little easy. To be honest I'm not really an expert when it comes to this(since there's still a few years until I'll start on a tertiary education) but I'm quite sure the idea is that you're supposed to learn stuff while you are there, and not before. Off course having some experience with different stuff is always good, the more the better, so just play around with a lot of different stuff. Something that you find interesting so you can keep the motivation.

And if you are really good at programming, then learning a GUI library shouldn't be that big of a deal, especially if you already have experience with one in a similar language. I haven't used Qt myself, but i know it's quite comprehensive. That doesn't mean that if you decide to learn Qt now you have to stick with it the rest of your life. Knowing several different GUI libraries for different languages is possible.

As I said earlier, I'm not talking from experience, just from how i think it is(where i live), so I might be completely off :)
I've taken a few general education classes in college and thats about it. I messed around and pretty much partied through high school, so i HAVE taken it easy :P. Now its time to get shit done.

I know learning a UI library isnt that difficult, but i dont like wasting time with choices that will only end up hurting me. Since Gyro explained how much this library does, i FINALLY had an option that had absolutely no down sides- exactly what i was looking for. I dont like saying i know something until i've spent a long time with something, know how it works, and can make use of it in the real world. Learning another UI library would've taken a lot of time, time that could've been better spent learning something else.


GyroVorbis wrote:Pft. DON'T take it easy on yourself. Don't rely on school to teach you things (because it won't teach you a tenth of what you want to learn). Don't ever stop pushing or fighting to better yourself when it comes to your potential. There is nothing nobler than striving to be better. Be your own teacher and take a proactive stance on your education. That's the only way to make it in a field as large as this one.
Exactly! Honestly i've always been a fast learner and hated school due to this reason. Most of my time in high school was spent fucking around (+partying) and waiting for the lesson plan to catch up to me. This was a lot of time that could've been spent helping me further my education :\. Im definitely big on the idea of learning at my own pace and not waiting on a group!

I jumped balls deep into Qt, and i gotta say ... i love it :D.
Image
User avatar
xx6heartless6xx
Chaos Rift Cool Newbie
Chaos Rift Cool Newbie
Posts: 80
Joined: Wed Feb 02, 2011 9:42 pm

Re: Lost in the world of software development

Post by xx6heartless6xx »

GyroVorbis wrote:
xx6heartless6xx wrote:I currently have a VERY simple tile level editor. I want to add buttons and drop down menus, etc and Qt seems like a pretty good application to create a good GUI with.

How is the process switching to using Qt? Would I need to completely rewrite my code in Qt using their functions?
Nah, not really. It's not like you can't still use all of the C and C++ standard libraries. Those are cross-platform by nature. It's just the SDL/Allegro/OpenGL parts that are going to need to transition to the QT framework (I don't know what you're currently using). QT even supports OpenGL-based widgets, so even that may not have to change.
Well I'm using SDL and using the SDL functions to load images and using SDL events as well for keypresses, mouse clicks, etc. I guess I can't then copy and paste my code and then just add to it with the Qt stuff. So I can still keep my code but I just need to convert some of code from SDL to Qt like the way it loads images and mouse clicks?
User avatar
Falco Girgis
Elysian Shadows Team
Elysian Shadows Team
Posts: 10294
Joined: Thu May 20, 2004 2:04 pm
Current Project: Elysian Shadows
Favorite Gaming Platforms: Dreamcast, SNES, NES
Programming Language of Choice: C/++
Location: Studio Vorbis, AL
Contact:

Re: Lost in the world of software development

Post by Falco Girgis »

xx6heartless6xx wrote:
GyroVorbis wrote:
xx6heartless6xx wrote:I currently have a VERY simple tile level editor. I want to add buttons and drop down menus, etc and Qt seems like a pretty good application to create a good GUI with.

How is the process switching to using Qt? Would I need to completely rewrite my code in Qt using their functions?
Nah, not really. It's not like you can't still use all of the C and C++ standard libraries. Those are cross-platform by nature. It's just the SDL/Allegro/OpenGL parts that are going to need to transition to the QT framework (I don't know what you're currently using). QT even supports OpenGL-based widgets, so even that may not have to change.
Well I'm using SDL and using the SDL functions to load images and using SDL events as well for keypresses, mouse clicks, etc. I guess I can't then copy and paste my code and then just add to it with the Qt stuff. So I can still keep my code but I just need to convert some of code from SDL to Qt like the way it loads images and mouse clicks?
Yeah, exactly. Essentially anything having to do with rendering/input will need to change. Everything else (your auxiliary functions) will probably be fine the way they are.
User avatar
xx6heartless6xx
Chaos Rift Cool Newbie
Chaos Rift Cool Newbie
Posts: 80
Joined: Wed Feb 02, 2011 9:42 pm

Re: Lost in the world of software development

Post by xx6heartless6xx »

GyroVorbis wrote:Pft. DON'T take it easy on yourself. Don't rely on school to teach you things (because it won't teach you a tenth of what you want to learn). Don't ever stop pushing or fighting to better yourself when it comes to your potential. There is nothing nobler than striving to be better. Be your own teacher and take a proactive stance on your education. That's the only way to make it in a field as large as this one.
What have you gotten out of your college education with a computer engineering degree? It seems you learned most of the things you know by yourself and not learn as much from school.
Post Reply