感觉现代c++不如d语言

imarshal 2017-09-05 04:23:54
功能都是那些功能,现代c++的实现语法太复杂,看着像天书
...全文
2874 83 打赏 收藏 转发到动态 举报
写回复
用AI写文章
83 条回复
切换为时间正序
请发表友善的回复…
发表回复
imarshal 2020-04-30
  • 打赏
  • 举报
回复
引用 79 楼 早打大打打核战争 的回复:
我之前也有认识不清的地方,原来我认为.net语言(C#、VB.net之类)写的程序通过.net native编译器能生成纯粹的原生代码,可以脱离.net运行环境,现在看来还是不行


应该就是以前我说的,https://docs.microsoft.com/en-us/uwp/midl-3/intro,c++/winrt不需要metadata
  • 打赏
  • 举报
回复
根据这篇文章的说明:https://www.windowscentral.com/microsoft-edge-built-arm-pcs-now-available-canary-channel
是直接编译为ARM原生代码的,至于是uwp还是传统win32/win64应用还未知
imarshal 2020-04-30
  • 打赏
  • 举报
回复
搜了搜,chromium edge arm64版本应该不是uwp,那相比win32,可能uwp唯一的优势就是安全了,不过windows 10x自带容器
imarshal 2020-04-29
  • 打赏
  • 举报
回复
引用 50 楼 早打大打打核战争 的回复:
uwp应用是原生代码应用,在ARM平台上运行的是ARM二进制版本,在x86上运行的是x86二进制版本,如果你在windows应用商店里看到某应用支持x86设备也支持ARM设备,实际是它有多套二进制版本,下载的时候应用商店会根据当前平台选择合适的一个,并非一套二进制代码适用于多设备。win10 ARM版有点特殊,它也能解释运行基于x86指令的应用,所以ARM二进制应用和x86二进制应用都可以运行。


你知不知道chromium edge arm64版本是怎么实现的,是和老版edge一样用的uwp,还是win32加上winui可以直接编译成arm64啊
  • 打赏
  • 举报
回复
我之前也有认识不清的地方,原来我认为.net语言(C#、VB.net之类)写的程序通过.net native编译器能生成纯粹的原生代码,可以脱离.net运行环境,现在看来还是不行
imarshal 2020-04-19
  • 打赏
  • 举报
回复
还有按照你的理解,https://docs.microsoft.com/en-us/dotnet/core/install/dependencies,为什么windows 7不能运行uwp呢
imarshal 2020-04-19
  • 打赏
  • 举报
回复
另外再搜.NET runtimes,uwp和一般的.net core运行时处理不同,没有问题,还有c++/winrt是native,也没有问题
imarshal 2020-04-19
  • 打赏
  • 举报
回复
引用 75 楼 早打大打打核战争 的回复:
是你脑子糊涂,一直没搞明白依赖关系,不是UWP基于.net core,而是.net core在windows上的runtime依赖UWP API(也就是WinRT)。你不相信的话看一下win10 system32目录下,windows.*.dll,这些是原生的,windows自带的dlls,不需要安装.net core就有。
简单说,.net语言写的UWP应用,依赖.net的runtime,从而间接依赖WinRT,所以无法在没有WinRT的系统上运行,比如win7、linux之类的。
WinRT,在底层自己实现了一套.net standard(这个东西只是一个标准,不是具体实现)兼容的API,就是windows.*.dll,但它这套实现是原生代码,和.net framework、.net core的实现完全不是一回事。在win10上,用C++、Delphi写的UWP应用程序不需要安装任何.net运行环境就可以直接运行,这是我实际测试过的。


上面那个链接,https://docs.microsoft.com/en-us/dotnet/standard/components,自己搜the .NET APIs are provided by .NET Core,按照我的理解,最根本的原因是winui或者uwp用到的xaml内部是基于directx12也可能11实现的,所以只能运行在windows 10上
  • 打赏
  • 举报
回复
是你脑子糊涂,一直没搞明白依赖关系,不是UWP基于.net core,而是.net core在windows上的runtime依赖UWP API(也就是WinRT)。你不相信的话看一下win10 system32目录下,windows.*.dll,这些是原生的,windows自带的dlls,不需要安装.net core就有。
简单说,.net语言写的UWP应用,依赖.net的runtime,从而间接依赖WinRT,所以无法在没有WinRT的系统上运行,比如win7、linux之类的。
WinRT,在底层自己实现了一套.net standard(这个东西只是一个标准,不是具体实现)兼容的API,就是windows.*.dll,但它这套实现是原生代码,和.net framework、.net core的实现完全不是一回事。在win10上,用C++、Delphi写的UWP应用程序不需要安装任何.net运行环境就可以直接运行,这是我实际测试过的。
imarshal 2020-04-19
  • 打赏
  • 举报
回复
引用 56 楼 早打大打打核战争 的回复:
你还能再胡说八道一些么?哪个链接里说“最新的还未发布的uwp版本基于.net standard 2.0,之前的版本普遍的看法是基于未开源版本的.net core”?你把原话引出来。我看你不但不懂英文,连一个谎言需要十个谎言来掩盖这样的中文也不懂了。
"还要x86 on arm做什么"前面告诉过你了,就是在windows ARM版直接运行现有的基于x86的应用程序,你理解不了么。


你现在看看,https://docs.microsoft.com/en-us/dotnet/standard/components
imarshal 2020-04-18
  • 打赏
  • 举报
回复
引用 72 楼 早打大打打核战争 的回复:
你看清楚UWP中写的是:Native (C++/WinRT and C++/CX) and managed (.NET Native),只有.net语言写的UWP应用是托管代码


对呀,不就是我之前61楼中的1说的
  • 打赏
  • 举报
回复
你看清楚UWP中写的是:Native (C++/WinRT and C++/CX) and managed (.NET Native),只有.net语言写的UWP应用是托管代码
imarshal 2020-04-18
  • 打赏
  • 举报
回复
引用 63 楼 早打大打打核战争 的回复:
最后再给你科普一次:
.net native技术就是给使用.net core框架的程序用的,如果用c++/cx写uwp应用,根本不需要.net native
使用.net core框架功能的托管代码源程序(c#、VB.net写的) -> .net native编译工具 -> uwp二进制可执行文件
深刻领会吧。


最近在看winui,突然想到之前的这个问题,https://docs.microsoft.com/en-us/windows/apps/desktop/choose-your-platform,搜里面的ui runtime,仍然是managed,说明什么
  • 打赏
  • 举报
回复
引用 69 楼 imarshal 的回复:
[quote=引用 68 楼 早打大打打核战争 的回复:]
[quote=引用 66 楼 imarshal 的回复:]
一个快要淘汰的技术,还一本正经讨论了几天,呵呵,没有赢家,到此结束了


哎呦,落荒而逃还要摆个POSE...
[/quote]

呵呵,事实胜于雄辩,你这种技术能力,还预测,太搞笑了[/quote]

事实是什么?傻槌,UWP什么时候淘汰,你说说吧~~~
imarshal 2019-02-02
  • 打赏
  • 举报
回复
引用 68 楼 早打大打打核战争 的回复:
[quote=引用 66 楼 imarshal 的回复:]
一个快要淘汰的技术,还一本正经讨论了几天,呵呵,没有赢家,到此结束了


哎呦,落荒而逃还要摆个POSE...
[/quote]

呵呵,事实胜于雄辩,你这种技术能力,还预测,太搞笑了
imarshal 2017-09-15
  • 打赏
  • 举报
回复
关于什么uwp/native,又搜了搜,总结一下 1. uwp是基于win32/com,不过把com中的tlb换成了winmd,也就是.net中的metadata,说是基于.net standard也没问题,至于说winmd具体的实现是否需要.net不知道,另外就是xaml,这个和.net是什么关系不知道,退一步说,就算uwp可以不依赖.net的库,也没有意义,因为用c++/cx、wrl、c++/winrt开发的加起来不会超过1% 2. .net native,可以确定的是支持uwp,不支持winform/wpf,至于说最新的.net standard/core,有可能会支持,但同样没有意义,因为这样的程序没有界面,只能是console 3. windows 10 mobile的uwp程序中的win32代码,是真正的arm指令还是说类似wow64在运行时模拟的,依然没有意义,因为现在win10m的手机都买不到了 总而言之,uwp没有意义,我看uwp的主要问题就在winmd,为了支持各种语言和所谓的新功能,放弃了tlb,想法当然很好,但从实际看得不偿失,传统的windows程序员要开发uwp不得不用到上面说到的三种技术,谁会吃饱了去学,而.net的桌面开发人员都是拖拖控件这种的半调子,当然,我还是很看好asp.net core的
  • 打赏
  • 举报
回复
引用 66 楼 imarshal 的回复:
一个快要淘汰的技术,还一本正经讨论了几天,呵呵,没有赢家,到此结束了
哎呦,落荒而逃还要摆个POSE...
  • 打赏
  • 举报
回复
引用 64 楼 imarshal 的回复:
呵呵,像你这种我也会,绿色的框表示完全基于,蓝色的框表示部分基于(metadata),黄色的框不表示基于表示安装使用


笑料就是每次自找打脸还自我感觉良好。

这紫色又表示啥了???白痴。
imarshal 2017-09-15
  • 打赏
  • 举报
回复
一个快要淘汰的技术,还一本正经讨论了几天,呵呵,没有赢家,到此结束了
imarshal 2017-09-15
  • 打赏
  • 举报
回复
就你这种水平还科普,我看你连tlb/metadata都不懂,更不用说language projection了
加载更多回复(63)

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧