Jump to content

I could use some advise before starting my programming projects.


Recommended Posts

I'm not sure if this is the right place to ask but will do so anyway... I am in the process of re-starting my programming career again. I used to be a Pascal programmer many years ago and wrote several Shareware DOS programs back in the late 80's and early 90's. As you can see I've been out the picture for some time.

I haven't programmed since then but would like to resurrect some of my old programs and write and port them over to the Windows environment.

I am currently learning C++ but have been wondering if this is the way for me to go? I want to write Window applications and eventually maybe sell some over the net so I know I need to learn MFC as well. I also want to be able to have them run on either the Windows or MAC systems. I suspect I would just have to recompile the Win apps to work on the MAC right?

Since I am learning C++ should I stick with this or should I seriously consider C# or something else instead? My gut feelings is to stick with C++ since it runs faster and allows for cross platform work and programs run on their own without a runtime module like C# or NET...

If C++ is the way I should go, could someone recommend a good up to date MFC book that will help me learn MFC pretty fast. I currently have an older version of "Programming Windows with MFC" by Jeff Prosise which has been well received, but it's pretty dated compared to my new VS 2008 Pro environment.

Any feed back is appreciated since I am still at the beginning of this road and would like to not waste too much time before writing my Window applications.

Thanks in advance for fielding my questions.

Dennis

Edited by dlt123
Link to comment
Share on other sites


I am currently learning C++ but have been wondering if this is the way for me to go?

It's a solid language for sure. Many other languages have similarities with it. But if it's *the* way for you to go? No one can answer that for you. Personally, I'd say it's a good language to learn, but like they say, when a hammer is your only tool, everything starts to look like a thumb ;)

I also want to be able to have them run on either the Windows or MAC systems. I suspect I would just have to recompile the Win apps to work on the MAC right?

No. Apps written with VC++, using MFC and all that won't run on Macs. First, you need to use a widget set that's cross platform (e.g. Qt, wxWidgets, GTK+), but some are ugly as hell, some are expensive (unless you want to open source all your apps), etc. Then you also need to write C++ in a portable way (using GCC instead of VC++ perhaps), and deal with a lot of fundamental differences in various platforms like threading (i.e. posix treads vs windows threads). It seems to me like an awful lot of work for a handful of users on different platforms. Besides, user needs on various platforms tend to be different, I mainly write apps to solve windows specific problems, so being cross-platform is not an issue for me.

Since I am learning C++ should I stick with this or should I seriously consider C# or something else instead?

I like C# a lot myself, but again, why not learn both? Use whatever language best solves the problem at hand.

My gut feelings is to stick with C++ since it runs faster and allows for cross platform work and programs run on their own without a runtime module like C# or NET...

The langage itself can be cross-platform/is portable indeed. Faster? Unless you're doing something special (like writing 3D video games, or scientific number crunching, or writing codecs), almost any language is fast enough. No need for runtimes? VC++ apps need the VC++ redist too, and often plenty of other libs.

Link to comment
Share on other sites

I like C# a lot myself, but again, why not learn both? Use whatever language best solves the problem at hand.

Thanks crahak, I am currently looking into C# and it looks like this may be the direction I go for my projects. C# looks pretty powerful. and like you said, I will finish learning C++ then move over to C#.

I appreciate your feedback,

Dennis

Link to comment
Share on other sites

I'm not sure if this is the right place to ask but will do so anyway... I am in the process of re-starting my programming career again. I used to be a Pascal programmer many years ago and wrote several Shareware DOS programs back in the late 80's and early 90's.

Just thought I'd mention this as an option, since you mention being an old Pascal programmer. FreePascal might interest you since you are looking for a Mac target as well. Lazarus may also be of interest to you. Of course, you can go to what became of Borland and look into Turbo Explorer as well.

Link to comment
Share on other sites

I'm not sure if this is the right place to ask but will do so anyway... I am in the process of re-starting my programming career again. I used to be a Pascal programmer many years ago and wrote several Shareware DOS programs back in the late 80's and early 90's.

Just thought I'd mention this as an option, since you mention being an old Pascal programmer. FreePascal might interest you since you are looking for a Mac target as well. Lazarus may also be of interest to you. Of course, you can go to what became of Borland and look into Turbo Explorer as well.

Thanks for the heads up... I used to use Borland when I programmed Pascal, but I think I will do extensive research into C# since it seems to have some really interesting functionality.

Thanks for responding.

Dennis

Link to comment
Share on other sites

Well, if he wanted to keep using pascal, the common choice would still be Delphi. But most people have moved away from that years ago now.

I will do extensive research into C# since it seems to have some really interesting functionality.

Well, it's a nice, clean, simple yet powerful language with a familiar C-ish syntax. And you have access to a great base class library that covers almost every need you can think of (encryption, database access, networking, web services, etc -- you name it!). It's very quick to develop good quality stable apps. winforms is a joy to use (compared to MFC and the like). It lets you focus on solving the problem at hand, instead of working on the nitty gritty low-level implementation of every little thing.

There's great development tools, a great documentation, very active newsgroups, tons of books, tons of other resources (samples, quickstarts, starter kits, etc), tons community sites like codeproject, tons of great 3rd party tools (e.g. anything by jetbrains), tons of ready-to-use code (e.g. enterprise lib), tons of training material, tons of great blogs, etc. And it keeps improving at a phenomenal pace (new language features like lambda expressions, cutting edge stuff like WPF and LINQ, new frameworks like the new-ish ASP.NET AJAX or MVC framework, etc). And of course, the language is usable for developing anything from windows apps (and somewhat on other platforms using mono), to server middleware, to web apps (ASP.NET).

It's not perfect or anything (nor the only language worth using or anything like that), but it sure has a lot going for it.

Edited by crahak
Link to comment
Share on other sites

Well after some helpful prompting, I am moving over to C#. C++ would give me more control over some aspects of my programming, but it looks like C# will take a lot of time consuming aspects away and do some things for me... Also, I really like the LinQ aspect.

I want to write a database application and C# looks like it will fit the bill just fine. Thanks for the feedback people.

Now I'm off to start my journey up a new learning curve hill. :unsure:

Dennis

Link to comment
Share on other sites

C++ would give me more control over some aspects of my programming, but it looks like C# will take a lot of time consuming aspects away and do some things for me...

You might have somewhat more control when you write something at a much lower level indeed. But most of the time, the functionality in the higher level languages is just fine (and most things can be extended, adapted, modified and what not to suit particular needs).

Personally, for most desktop or web apps I'd rather use a high-ish level language and good set of libs, and concentrate on the problem to solve (how to solve it better), and have time to think about things like a good design/architecture (which greatly affect maintainability, readability, stability, and even speed more than any language choice will), instead of pointlessly spending my available time on low-level stuff, like writing tons of Win32 API calls, allocating memory (and chasing bugs where it's accessed after it's free'd, memory leaks, etc), fixing buffer overflows and all that endless "fun" stuff.

For places where C# doesn't cut it, be it for resource usage or speed, e.g. microcontrollers, I normally use plain old C or quite often assembly (you can only fit so much code in a few KBs of memory, ISR's need to be very fast, etc).

Database wise, there's a lot of nice stuff. ADO.NET is nice. SqlClient is great. And there's LINQ indeed, and several ORM's if you're interested e.g. NHibernate, as well as code generation tools & templates (to automatically write a data access layer for your database). And things like the enterprise lib. There's loads of resources out there. And the language itself (C#) is great for that purpose too (tons of useful things, like nullable types). And if you plan on having a web client for it too (not just a desktop app), then you can reuse a lot of your code for that too (everything but the presentation layer pretty much), and tons of "web stuff" is already done for you e.g. you want an authentication system? ASP.NET has a good authentication system built right in! (with users, groups, admin pages, pre-made components, page security, etc). You can build a solid, stable, reliable and app that performs great in no time at all.

Link to comment
Share on other sites

C++ would give me more control over some aspects of my programming, but it looks like C# will take a lot of time consuming aspects away and do some things for me...

You might have somewhat more control when you write something at a much lower level indeed. But most of the time, the functionality in the higher level languages is just fine (and most things can be extended, adapted, modified and what not to suit particular needs).

Personally, for most desktop or web apps I'd rather use a high-ish level language and good set of libs, and concentrate on the problem to solve (how to solve it better), and have time to think about things like a good design/architecture (which greatly affect maintainability, readability, stability, and even speed more than any language choice will), instead of pointlessly spending my available time on low-level stuff, like writing tons of Win32 API calls, allocating memory (and chasing bugs where it's accessed after it's free'd, memory leaks, etc), fixing buffer overflows and all that endless "fun" stuff.

For places where C# doesn't cut it, be it for resource usage or speed, e.g. microcontrollers, I normally use plain old C or quite often assembly (you can only fit so much code in a few KBs of memory, ISR's need to be very fast, etc).

Database wise, there's a lot of nice stuff. ADO.NET is nice. SqlClient is great. And there's LINQ indeed, and several ORM's if you're interested e.g. NHibernate, as well as code generation tools & templates (to automatically write a data access layer for your database). And things like the enterprise lib. There's loads of resources out there. And the language itself (C#) is great for that purpose too (tons of useful things, like nullable types). And if you plan on having a web client for it too (not just a desktop app), then you can reuse a lot of your code for that too (everything but the presentation layer pretty much), and tons of "web stuff" is already done for you e.g. you want an authentication system? ASP.NET has a good authentication system built right in! (with users, groups, admin pages, pre-made components, page security, etc). You can build a solid, stable, reliable and app that performs great in no time at all.

Sold... I'm with you. I am head long and foot in to learning C# and everything. I just installed VS 2008 Pro and bought a couple of great books on VS 2008 and C#. My months ahead are going to be spent learning all I can and enjoying my venture into this environment.

I can agree with your assessment of C++, it gives you a lot of guns to shoot your feet off. :)

Thanks for your feedback,

Dennis

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...