WP8支持什么语言?什么CPU?
最近常常找些windows 8 和windows phone 8 的新闻看。主要就是看软件的移植问题、语言问题。
我学过C++、MFC、winsock。
前几天看见个网站说WP8不支持C++,给出的原因是手机的CPU太多,而C++编译出来的程序是针对特定CPU的。所以WP8只支持C#一类的语言,因为他们有虚拟机!!
我这又看见个网页,又说WP8支持C++。支持C++之后C#程序员又要处于劣势了,因为C#不如C++程序快。这个网页还说目前WP8只支持高通公司的CPU。
下面是网页的一段话:
高通是 Windows Phone 8 目前支持的唯一芯片供应商。诺基亚两个月后发布的新旗舰显然会采用 Krait 内核的骁龙 S4 处理器。新系统也开始支持 SD 卡扩展存储。
WindowsPhone8支持C++,意味者新平台上.net C#开发者面临困境,
很简单的道理,同样一款类似的应用,人家用C++写的比你的内存占用小,速度更快,体验自然更好
从游戏基于directX看,现有的C#程序员毫无优势可言,传统桌面游戏商在C++、DirectX上有深厚积累,比如物理引擎,AI算法,而且C++速度更快,这其实说明微软已经抛弃了原来的只会silverlight、wpf之类的C#开发者。
在看看下面百度百科的一段话:
Windows Phone 8采用和Windows 8相同的针对移动平台精简优化NT内核并且内置诺基亚地图,这标志着移动版Windows Phone将提前与Windows系统(ARM)同步,部分Windows8(ARM)应用可以更方便的移植到手机上,例如不需要重写代码等(注明:与PC平台版应用不兼容,也无法移植,可以移植的是ARM的Windows RT版本应用,这是ARM与X86构架的原因,并且可以移植的应用必须是.net编写的应用程序,C与C++程序必须重写代码)。
在着,WP8和PC WIN8 内核相同,不同的CPU却有相同的内核,这是怎么回事?不同的汇编指令给搞到一起去了?。。。。
[最优解释]
系统内核和CPU内核是两回事。
系统来兼容不同CPU是微软干的活,我们不用操心。
wp8、win8的metro app都是支持C++的,但是是阉割过的
[其他解释]
百度百科的那段是有上下环境,
历史是,windows phone 7/7.5的app只支持dotnet,这些可以直接放到wp8,w8上,
[其他解释]
WP8支持C++,楼主放心吧。
但是楼主对C#速度慢的想法,还是不太赞同。
这就相当于我说用汇编更快一样。
现在CPU都动辄1G Hz了,绝大多数情况没必要纠结于必须用C++开发才速度快。
[其他解释]
WP8支持C++,楼主放心吧。
但是楼主对C#速度慢的想法,还是不太赞同。
这就相当于我说用汇编更快一样。
现在CPU都动辄1G Hz了,绝大多数情况没必要纠结于必须用C++开发才速度快。
[其他解释]
//计算行列式,参数一为存储行列式的数组,参数二为阶数
double CMatrix::calculateDeterminant(double *p,int n)
{
if(n<1)
{
return -1;
}
//若行列式阶数为1,则返回其内的唯一元素值
if(n==1)
{
return *p;
}
//定义临时指针变量指向当前行列式余子式数组
double *curr = new double[(n-1)*(n-1)];
double result = 0;
int i, r, c, cc;
//求当前第一行第i列余子式(按第一行展开)
for(i = 1; i <= n; ++i)
{
for(r = 2; r <= n; ++r)
{
cc = -1;
for(c = 1; c <= n; ++c)
{
if(c != i)
{
*(curr + (r-2) * (n-1) + (++cc)) = *(p + (r - 1) * n + (c-1));
}
}
}
//计算求代数余子式之和,使用递归调用计算其余子式的值
result +=*(p + i - 1) * pow((double)(-1), (int)(1 + i)) * calculateDeterminant(curr, n-1);
}
//释放存储临时变量所占空间
delete [] curr;
return result;
}
//高斯投影正算公式
void CoordinateConvert::GeodeticGaussToCartesian (PCRDCARTESIAN pcc, PCRDGEODETIC pcg,
double dSemiMajorAxis, double dFlattening,double dLongitudeNo) //高斯投影正算公式
{
double B;//纬度度数
double L;//经度度数
double L0;//中央经线度数
double l;//L-L0
double t;//tanB
double m;//ltanB
double N;//卯酉圈曲率半径
double q2;
double x;//高斯平面纵坐标
double y;//高斯平面横坐标
double s;//赤道至纬度B的经线弧长
double f;//参考椭球体扁率
double e2;//椭球第一偏心率
double a;//参考椭球体长半轴
//double b;//参考椭球体短半轴
double a1;
double a2;
double a3;
double a4;
double b1;
double b2;
double b3;
double b4;
double c0;
double c1;
double c2;
double c3;
//int Datum=80;//投影基准面类型:北京54基准面为54,西安80基准面为80,WGS84基准面为84
int prjno=0;//投影带号
//int zonewide=3;//投影带宽:6度带投影为6,3度带投影为3
int zonewide;
zonewide=m_iZoneWide;
double IPI=0.0174532925199433333333;// 3.1415926535898/180.0
double PII=57.2957795130821975611438762422; // 180/3.1415926535898
B=pcg->latitude ; //纬度
L=pcg->longitude ; //经度
L0=dLongitudeNo;//中央子午线,以度为单位
a=dSemiMajorAxis;
f=dFlattening;
L0=L0*IPI;//中央经线度数转换为弧度
L=L*IPI;//经度转换为弧度
B=B*IPI;//纬度转换为弧度
e2=2*f-f*f;//(a*a-b*b)/(a*a);
l=L-L0;
t=tan(B);
m=l * cos(B);
N=a/sqrt(1-e2* sin(B) * sin(B));
q2=e2/(1-e2)* cos(B)* cos(B);
a1=1+(double)31/40*e2+(double)45/64*e2*e2+(double)176/256*e2*e2*e2+(double)11025/16384*e2*e2*e2*e2+(double)43659/65536*e2*e2*e2*e2*e2;
a2=(double)3/4*e2+(double)15/16*e2*e2+(double)526/512*e2*e2*e2+(double)2205/2048*e2*e2*e2*e2+(double)72766/65536*e2*e2*e2*e2*e2;
a3=(double)15/64*e2*e2+(double)105/256*e2*e2*e2+(double)2205/4096*e2*e2*e2*e2+(double)10359/16384*e2*e2*e2*e2*e2;
a4=(double)35/512*e2*e2*e2+(double)316/2048*e2*e2*e2*e2+(double)31185/13072*e2*e2*e2*e2*e2;
b1=a1*a*(1-e2);
b2=(double)-1/2*a2*a*(1-e2);
b3=(double)1/4*a3*a*(1-e2);
b4=(double)-1/7*a4*a*(1-e2);
c0=b1;
c1=2*b2+4*b3+6*b4;
c2=-(9*b3+32*b4);
c3=32*b4;
s=c0*B+cos(B)*(c1*sin(B)+c2*sin(B)*sin(B)*sin(B)+c3*sin(B)*sin(B)*sin(B)*sin(B)*sin(B));//由赤道至纬度B的经线弧长
x=s+(double)1/2*N*t*m*m+(double)1/24*(5-t*t+9*q2+4*q2*q2)*N*t*m*m*m*m+(double)1/720*(61-58*t*t+t*t*t*t)*N*t*m*m*m*m*m*m;
y=N*m+(double)1/6*(1-t*t+q2)*N*m*m*m+(double)1/120*(5-18*t*t+t*t*t*t-14*q2-58*q2*t*t)*N*m*m*m*m*m;
y=y+500000;//加500公里,不用出现负数.
//if (true==m_bPrefixDH) //坐标值前缀带号
//y=y+1000000*prjno;
pcc->x=x;
pcc->y=y;
pcc->z=pcg->height ;
}