[Q] WP8 C++ vs C# - Windows Phone 8 Q&A, Help & Troubleshooting

Hi everyone!
Given the announcement of WP8, today, I noticed that there was not a whole lot of information of whether or not C# would receive a lot of support for developers.
I have started learning C# as my first programming language, but I am wondering if I should jump ship and learn C++ instead to write apps for W8 and WP8.
Should I? I know C++ has been popular for a while, but can anybody guess as whether MSFT is pushing developers to the C++ route and away from C#?
Thank You!

CodyNunes said:
Hi everyone!
Given the announcement of WP8, today, I noticed that there was not a whole lot of information of whether or not C# would receive a lot of support for developers.
I have started learning C# as my first programming language, but I am wondering if I should jump ship and learn C++ instead to write apps for W8 and WP8.
Should I? I know C++ has been popular for a while, but can anybody guess as whether MSFT is pushing developers to the C++ route and away from C#?
Thank You!
Click to expand...
Click to collapse
C# is definetely not being pushed away. C++ requires a lot more work than C#. You should not stop learning C#, but maybe consider learning C++ after you learn C#.

I absolutely agree with the comment above. C++, however, can let you produce far better optimized apps at the cost of a longer coding time.
Sent from my GT-I9100 using XDA

Microsoft said during the Event that they encourage the use of XAML/C#, VB.Net for regular Applications. For Games they encourage People to go with C++ and DirectX. There are currently community projects aiming for kind of a follow up to the XNA framework allowing people to write Games for Windows 8 Metro using C# and DirectX which due to the shared APIs should enable the same for WP8 but I don't know how far along they currently are.
For highly resource intensive computations you might want to leverage the C++ performance benefits but overall C# is fast enough for most use cases and development is speedier and A LOT less prone to errors.

Thank you, everyone! If any more information comes up about the limitations of c# or c++, I would appreciate any ideas opinions or input!

JavaScript also joined the game.
I like C#. Performance doesn't sound like good excuse to abandon it for c++ as hardware is becoming faster all the time.
Sent from my GT-I9100T using XDA

eyal-f said:
JavaScript also joined the game.
I like C#. Performance doesn't sound like good excuse to abandon it for c++ as hardware is becoming faster all the time.
Sent from my GT-I9100T using XDA
Click to expand...
Click to collapse
Well, the discussion about the performance between C# and C++ is pretty old. Just bing it and you'll find tons of pages. In my experience you can get very fast algorithms in both languages when you plan your app right. I'd suggest C# to learn as it is "safer" to start with. You don't have to care about garbage collection and memory management for instance. Also, you can easily reuse code in other apps. If you invest time in learning C# you will get more performant apps than by learning only a bit of C# and a bit of C++. And you can even write good games in C#. You can really get pretty darn high performant apps in C# if you optimize them right.

ChrisKringel said:
You can really get pretty darn high performant apps in C# if you optimize them right.
Click to expand...
Click to collapse
You've read my mind. Personally, I would also not bother whit c++ when you don't necessarily need to.
And game devs should keep in mind that using xna (c#) is the only possible way to get their games also on the xbox (And hopefully xna will get an updated version for WP8 with custom shader support and all that stuff)

XNA seems to be in pretty much the same spot as Silverlight. Microsoft is still supporting it but there is no news at all on future development. It seems development of XNA was stopped. Currently people are trying to develop replacements.
Most Apps will wok just fine using C# or JavaScript. For some things you will need to use highly optimized Algorithms. Had a discussion once with a Dev who did realtime Audio analysis on several platforms using fast fourier transformations and after all efforts on the Forum to optimize the C# code the C++ version was still twice as fast. That is simply due to some of the code security features. When accessing an array in C# the language will always do an out of bounds check to perhaps raise an Exception while C++ simply reads whatever is at the pointer position even if it is in memory behind the array as long as the memory is allocated.
By not doing these checks alone it reduces computation and given the limited processing power sometimes this is necessary to get things working decently on a mobile device.
Still there also were several benchmarks were C# code was able to outperform the C++ implementation (especially object heavy code).
So if you absolutely must have the highest possible performance C++ is the way to go. It's similar if you want to port your code accross platforms as you can do C++ for Android and iOS. In all other cases C# would be preferable as as it was said before it is more productive and less error prone.

You can use unsafe code in c# as well

chabun said:
You can use unsafe code in c# as well
Click to expand...
Click to collapse
To my knowledge not on Windows Phone. It would get rejected from the Marketplace. This might change with WP8 but we don't know yet.
Unsafe code also complicates things a lot because as soon as you directly manipulate memory you have to take care of it like in C++ because the Garbage Collector is out of the picture.
Most often it would be the easiest route to develop the performance critical code using C++ and then use that library from C#. This at least should be supported by WP8 although I can't remember where it was said exactly.

chabun said:
You can use unsafe code in c# as well
Click to expand...
Click to collapse
It's a lot better to simply use a C# UI to wrap C++ code. However, it's easier to just use C++ in that case
Sent from my GT-I9100 using Tapatalk 2

Related

Wanting to develop my own software

Right...I’ve been using xda-dev for a while and decided its about time I contribute something back....especially as its my uni holidays and I have nothing to do my software idea is basically something to tell you prices of near by fuel outlets. Unless something like this already exists (a quick search of fuel prices on the xda-dev of fuel prices shows nothing)
Firstly I have no previous programming experience but we all have to start somewhere right?
Secondly what would I use to write the program in?
Thirdly how difficult would such a project be?
Sorry if questions I ask don’t make sense, I am a total noob.
I'm a noob aswell, but from what I can see to be able to do this your going to have to have access to all the necessary fuel prices, which are going to be updated how and from where?
Unless you could get access to an existing sql database, i cant see it being practical, well not for a noob anyway.
Anyone Correct me if i'm wrong.
Hmm i guess its best to learn programming before you attempt to write a software. Visual Studio is probably the best one to write in, and i believe the phone uses .NET. (Which can open up more languages and its pretty damn easy to program in)
Too lazy to write a program myself for PPC, but i recommend Visual C++
Video Tutorials -For programming in windows mobile
http://www.cplusplus.com/ -Good place to learn stuff
As for the difficulty, it depends.
Getting the gas info is the easy part, (ie some gas websites have easy URLS such as www.gasblahblah.com/index.aspx&?area=ZIPCODE
then parsing the page is trivial.
As for the functionality, try looking on sourceforge for some sample coding you can use, such as a skeleton for a today plugin etc.
Its not gunna be easy but goodluck!
good luck
As hirst89 said, it will be difficult. First of all, you need to build an up to date database (go check mysql or sqlite on google which are truly wonderful database softwares). Then, about the program itself, you have to learn how to develop in .NET with visual studio and .NET framework 2.0 (license fees are awfully expensive for the whole solution but you could try light versions don't know if they are trustable go check http://msdn.microsoft.com/fr-fr/express/aa975050.aspx). After that, you'll need a good server with an average bandwith (depends on the country you live in, for france go check www.ovh.com).
Good luck, you'll need it!!!!​
goorht
Yeh I think my post only touched on the difficulties of it. How would you go about collecting data from presumably the majority of fuel stations? Especially on a low budget, I presume from the fact that your a student.
And as for the programming, I wouldnt like to guess how much of an in depth knowledge you would need of .net for it to be basically functional.
Hope this all helps....but hope it doesnt squash your ideas and aspirations
Thank you for your quick responses...can you think of any more practical or easier to implement which I could start with?
well you could use c# which is use alot for software running on the windows mobile environment. there is Visual C# express version for free if you odnt want to shell out the money for visual studio.
zeezee said:
well you could use c# which is use alot for software running on the windows mobile environment. there is Visual C# express version for free if you odnt want to shell out the money for visual studio.
Click to expand...
Click to collapse
i think i'll start with express and if i enjoy it and get some interest in wat i'm doing then give something else a try.
I'm really worried going into this...i have no idea wat to expect
*just waiting for Visual basic to download and install*
Humz said:
i think i'll start with express and if i enjoy it and get some interest in wat i'm doing then give something else a try.
I'm really worried going into this...i have no idea wat to expect
*just waiting for Visual basic to download and install*
Click to expand...
Click to collapse
I had a brief look at creating my own software but my programming and coding knowledge doesn't stretch that far, I think I'll just stick with what im good at CSS, XHTML & Graphic Design
visual studio is easy, VS8 is free but it doesn't do much, if i'm not mistaken and i believe it was mentioned above that visual studio works in .NET but first you should try a couple easy things, try writing a small game like idk SKI FREE!!!! i haven't gotten around to it, but writing a game or other such is one of my projects for the summer while school is out. but that feul idea is fantastic, but windows live already tried it and it is extremely out of date. start small and work into the bigger stuff.
p.s. if you write ski free and get it to work on the phone let me know
Visual Studio Express doesn't allow you to develop mobile applications. Students from selected countries can grab a free copy of VS2008 Professional from here. Otherwise, the next best free solution would be the outdated eVC++ or eMbedded Visual Tools, which only support up to Pocket PC 2003 SDK. However, those apps will still work on WM5/WM6, etc. The main limitation is that the you don't have access to the APIs in the newer OS.
Humz said:
(a quick search of fuel prices on the xda-dev of fuel prices shows nothing)
Click to expand...
Click to collapse
There are some programs that retrieve current and local gas prices. Windows Live Search is one.
I don't want to discourage you from writing your own, sounds like it would be good practice to start with. I wish I had the time to learn how to do it.
GWelker62 said:
There are some programs that retrieve current and local gas prices. Windows Live Search is one.
I don't want to discourage you from writing your own, sounds like it would be good practice to start with. I wish I had the time to learn how to do it.
Click to expand...
Click to collapse
I was gonna mention that.
This is a wery good book to start whit. Introduction to Programming Using Visual Basic 2008.

app question

is it possible to port iphone apps over to android?
Depends on what you mean by port. If you mean "completely rewrite to operate in a similar fashion" then in most cases yes. If you mean take the iPhone app and run it through some kind of magickal program that converts it into a functional apk... no.
yes by port i mean completely rewrite the the code to allow a program to run in a similar fashion. is that hard to do?
ninjavampire said:
yes by port i mean completely rewrite the the code to allow a program to run in a similar fashion. is that hard to do?
Click to expand...
Click to collapse
"Hard" is a pretty subjective word.
iPhone apps are written in Objective C with the Cocoa framework. Android is written in Java with subsets of the Java framework libraries and specialized Android frameworks. While they're not completely disparate, they are still distinct languages. The ease of moving from one language and development framework to another depends on the experience and capability of the programmer and the complexity of the codebase (e.g. it will probably be easier to port a tic-tac-toe puzzle than a rpg). Also, the more generically and modularly a codebase is written, the easier it will be to move to a different platform. Some applications are the sort that need to be supported long term (mail clients, social networking apps, etc.) These will generally tend to be written with a mind for long term maintainability and thus be written more cleanly and modularly. Otoh, apps like games and single-purpose apps tend to not be written with long term maintenance in mind. They may be written more sloppily and thus be more difficult to port without a complete ground up rewrite.
In the end though, for most development studios with real paid programmers, it's not a matter of difficulty (most modern programmers have atleast some Java knowledge) but a matter of business. In short, business development staff will calculate how much potential profit there is to be had from various options for a potential future project and typically pick that which is the most profitable. For multiplatform developers, generally that means creating cheap one-off iphone apps. Some of the most profitable apps are really simplistic things like fart apps or really simple games.
ok thank you for your help i understand it a lot clearer now. really wish i knew more than just basic javascript...
ninjavampire said:
ok thank you for your help i understand it a lot clearer now. really wish i knew more than just basic javascript...
Click to expand...
Click to collapse
It's never too early or too late to start learning a new language, if you have the will and time. There are plenty of self-teach Java guides online.
Edit: I meant a programming language, ofc, but I just realized that that also applies to human languages as well.

Coding/ programming Android

This really should be in the Dev section, but for fear of the thread getting trashed, I put it in Q & A. If this question has been posted, don't flame me...just point me to the link.
Simply, I want to learn to code in Linux. I now know next to nothing. I have learned most of the shell commands and such, but where do I go from here.
What language is Android in (Java, I presume. But isC++ useful)? I can find tutorials and I am intelligent, so I should be able to learn some on my own. Where do I start?
I have found several interactive tutorials:
1. Learning to program in C++
2. Learning to program in Java
Which one to pursue? I don't want to be Cyanogen or anything, but can't stand to be left out of the loop.
Will
Android apps are built in java. Start here for the SDK and plenty of useful info to get you going:
http://developer.android.com/index.html
Developer.android.com is a good place to start.. its modified form of java called dalvik, but java none the less. C is good for terminal apps, and Im pretty sure you can include some c in apps now too
the language is the least thing you should worry about though. Pick up a book on programming for dummies (i mean it, not trying to be mean or anything) or something that teaches you the basics of programming. There are several conventional approaches that we use to program. You can dive head first into Java, or C++, etc, but if you don't yet understand program flow (sequential, looping, or branching) or about data types and structures, objects, etc, you'll still be at a loss. Programming is a very general concept and once you get the hang of it, then you can pick whichever language is the best tool for what you'll be doing (in this case, google's android implementation of java).
Also pick up some HTML and javascript, both combined will make it a lot easier to understand XML once you get to it, and for some of the shell scripting associated with putting out roms, give using any linux distro as your real main OS a try for a few months. It's frustrating at first, but you'll learn so much trying to learn how to use it.
Jubeh,
Exactly the answer I was looking for. While thankful to the other posters, I think they understood me as having some knowledge (I tried to dive right into the SDK and it made about as much sense as Hebrew).
I am downloading a book called C++ for dummies and another by O'reily.
Let's see where this leads....I hope it is something that if I am dedicated enough can be learned outside a classroom.
Thanks all....
----
Removed:
shouldn't be posting warez, alritewhadeva.
Anyway, I'm also studying several android-related topics right now. I took like two computer science classes in highschool (first was intro to programming in basic and then advanced concepts in c++) and then did scheme programming for my first semester in college for bs-cs and java for my data structures semester, and then I quit school . I also did some self-taught learning in HTML (back when we actually made pages in HTML), javascript, and java applets.
Anyway, I hadn't touched any coding since about 6 years ago and now with android i'm trying to get back into it, but I've pretty much forgotten many things (syntax mostly, concepts stick with you), so right now I picked a book for programming for dummies too. I'm almost 3/4 done in 2 days because I know most of that stuff, but the refresher is nice. I plan on picking up a C++ book next, to get up to date with the current implementation, and because once you understand C++ (it's high level enough and low-level enough), java and other object oriented languages are a breeze to understand. After it I plan on catching up to JAVA 6, and then hopefully dive into android's java. It's a lot of work and requires dedication when you're doing it on your own, but it's also rewarding (both personally, and in that you could always get a job with just C++ that pays well enough for limited knowledge)
jubeh said:
shouldn't be posting warez, alritewhadeva.
Anyway, I'm also studying several android-related topics right now. I took like two computer science classes in highschool (first was intro to programming in basic and then advanced concepts in c++) and then did scheme programming for my first semester in college for bs-cs and java for my data structures semester, and then I quit school . I also did some self-taught learning in HTML (back when we actually made pages in HTML), javascript, and java applets.
Anyway, I hadn't touched any coding since about 6 years ago and now with android i'm trying to get back into it, but I've pretty much forgotten many things (syntax mostly, concepts stick with you), so right now I picked a book for programming for dummies too. I'm almost 3/4 done in 2 days because I know most of that stuff, but the refresher is nice. I plan on picking up a C++ book next, to get up to date with the current implementation, and because once you understand C++ (it's high level enough and low-level enough), java and other object oriented languages are a breeze to understand. After it I plan on catching up to JAVA 6, and then hopefully dive into android's java. It's a lot of work and requires dedication when you're doing it on your own, but it's also rewarding (both personally, and in that you could always get a job with just C++ that pays well enough for limited knowledge)
Click to expand...
Click to collapse
How is it a ware? Ebook...
Removed link anyway.
Thanks for asking this question pinetreehater. I've searched for the answer and not really found what I was looking for. I wanted to ask this myself but, as you stated, I didn't want to get noob-bashed.
I have some programming knowledge. I took some of the older langauges in highschool *mid 80's* (basic (of course), cobol, and assembler). And was quite good at it. IMHO. But I didn't really follow it after that and have basically forgot all of it.
I have a question.
Once I've got the books. How do I practice using them on my pc?

Programming

So back when I was a teenager. I played around with vb. Wrote a couple very simple programs. A couple trojans using Winsocket ect ect. So I pretty much have no real direction with programming. I've always been the one of the group who "builds those pooter box thingamajigers". Lol, but hardware and software are VERY different. So I've been scanning the net and found a few good beginners java books. Got meh the pdf's, and I'm going to learn myself some java
So. One of these days. I may be able to contribute around here. With more than just words
[edit] I will be doing this is as a hobby, and maybe side projects. As I am a psych major.
Good Luck Zex....
Thanks man.....
Appreciate it
My auntie was learning java and used a programme called RoboCode. I think that has something to do with java. Try googling it. Basically you programme in java to make robots fight each other. Kinda cool. You should try it when you start a bit of java.
Oh and java apps would be good around here. Maybe Games??
I dunno.
Well good luck!!!
flyboy
well considering android is based from java. I figured I shall learn the ins and outs of it first. Before, I even try to mess with deving for our phones
native apps on android are in c++ though
Rudegar said:
native apps on android are in c++ though
Click to expand...
Click to collapse
What 'chu talikn' about, Willis? http://developer.android.com/guide/topics/fundamentals.html
I'm also learning Java as part of my A-level course, and man, loops are a ***** :-/
http://developer.android.com/sdk/ndk/index.html
ndk is c++
ndk == native development kit
I wasn't really talking about apps.
Also. Once I get the basics down. It'll be alot easier for me to understand the android sdk, and become familiar with it's api's.

VB or C# for new dev

I'm a network admin who wants to start developing windows apps. I have a Masters in IT, but no coding experience. I had to take a C class, but didn't understand it. Should I learn VB or C#? I understand C# is superior, but I'm new and don't understand the concepts. I know they both use .net and I'm wondering if VB would be a good way to start or a waste of time? Thanks
Sent from my RM-893_nam_tmous_201 using Tapatalk
First of all, if you remember *anything* from C, C# will be more familiar.
Second, in terms of an employable skill in the job market, C# is more valuable; not only is it in greater demand in general, it's also closer to both C++ and Java, both of which are in very high demand.
Third, while VB.NET is a perfectly reasonable modern language with plenty of nice features, that modernization + same anachonisms it has held onto has led to it reaching a state that I consider no easier to learn than C#, so between the two of them I'd certainly recommend C#.
I can not say that I have personally done a lot of vb development, but based upon what I have seen of it, I would certainly recommend c#. C# is quite similar to other powerful languages such as c++ and Java, so after developing a solid understanding of c#, getting familiar with these other languages will be a breeze. It provides the best integration with the .net framework, and has simple and easy to understand syntax. I think that c# is more of a replacement for VB than anything anyways, and as such, learning c# is the best way to go:laugh:
If this message helped you, or you appreciate me taking the time, then smash that thanks button like a crazy spider running across your floor
rootfan said:
I can not say that I have personally done a lot of vb development, but based upon what I have seen of it, I would certainly recommend c#. C# is quite similar to other powerful languages such as c++ and Java, so after developing a solid understanding of c#, getting familiar with these other languages will be a breeze. It provides the best integration with the .net framework, and has simple and easy to understand syntax. I think that c# is more of a replacement for VB than anything anyways, and as such, learning c# is the best way to go:laugh:
If this message helped you, or you appreciate me taking the time, then smash that thanks button like a crazy spider running across your floor
Click to expand...
Click to collapse
Java and C# only have in common the common object class and similar syntax to some extend.
C# is way more powerful than java and comes close to C++ as far as complexity is concerned.
C# all the way. The way it is built and the constructs of the language itself, makes it easy to learn and enjoyable to code with. And I've use both Java and VB in a little enviroment
Functionally, there's no difference between C# and VB.NET. Anything you can do in C# you can also do in VB.NET. The syntax of VB is much easier, and is overall more easily picked up, but C# is more common, and more useful in the industry.
If you look at code samples a lot, and use C#<>VB.ET converters, you can pick up the syntax of both of them, so even if you found a code sample in VB you'd be able to work out how to code it in C# easily.
I used to hack exclusively in BASIC and VB. Now I work pretty much exclusively in C# (and the very similar powershell) and would encourage anyone else to use it too. It's FAR more useful than anything BASIC.
VB.NET and C# are virtually identical in capability (the both compile to MSIL that is processed by , so in terms of what you can do with them, they are equally useful. The main differences are how easily you can do certain things. With that said, though, C# (as a "C-like" language much like the very widely used C++ and Java languages) is more professionally useful that VB.NET (which is a "BASIC-like" language, a language family that is dying out in the professional world).
C# is almost identical to Java, and Java is very popular now. If you learn C# very well, learning Java is a matter of hours away and then you can easily port apps to android too

Categories

Resources