.NET Standard 2.0 在跨平台开发方面救了 VB 一命

tmp00000 UID.995403
2017-08-20 发表

本帖最后由 tmp00000 于 2017-8-20 12:08 编辑

从这一张图可以看到, 尽管 Xamarin 对 VB 在工具上的支持度是 0,借助 .NET Standard 2.0 的力量,仍然可以用 XAML 和 VB 开发安卓应用。只不过我们需要编写一个工具用来生成 *.xaml.g.vb 文件。而且不会像之前用 PCL 的时候那样不能用 System.IO.File 这些 API。基本上 .NET Framework 能用的业务逻辑相关 API 都能用。(甚至 IL 动态生成都有,尽管它不兼容 iOS 和 .NET Native)。 现在的编程语言发展趋势是 开源(主要是编译器)和 跨平台。任何与平台紧密耦合的编程语言都有被淘汰的风险。 所以说,.NET Standard 2.0 在跨平台开发方面救了 VB 一命。
***图片停止解析***

敬告:
为防止不可控的内容风险,本站已关闭新用户注册,新贴的发表及评论;
你现在看到的内容只是互联网用户曾经发表的言论快照,仅用于老用户留存纪念,且仅与科技行业相关,全部内容不代表本站观点及立场;
本站重新开放前已针对包括用户隐私、版权保护、信息安全、国家政策在内的各种互联网法律法规要求,执行了隐患内容的自查、屏蔽和删除;
本站目前所属个人主体,未有任何盈利安排与计划,且与原WFUN.COM所属公司不存在任何关联关系;
如果本帖内容或者相关资源侵犯到您的合法权益,或者您认为存在问题,那么请您务必点此举报或投诉!
全部回复:
TonyDeng UID.2870126
2017-08-20 使用 Lumia 950 回复

准确地说是VB.net,不是VB。

tmp00000 UID.995403
2017-08-20 回复

QuoteTonyDeng 发表于 2017-8-20 12:20
准确地说是VB.net,不是VB。


微软改名部已经在 2010 年把 vb.net 重命名为 VB。只有需要区分 VB6 这种早期版本 和 更高版本的时候才用 VB.NET 表示 >=7.0 版本的 VB,用 经典 VB 表示 VB6 或更早的版本。

TonyDeng UID.2870126
2017-08-20 使用 Lumia 950 回复

Quotetmp00000 发表于 2017-8-20 13:05
微软改名部已经在 2010 年把 vb.net 重命名为 VB。只有需要区分 VB6 这种早期版本 和 更高版本的时候才用 ...


没印象有这个重命名,不过我也不用VB。

AFAN-World UID.2879093
2017-08-20 使用 Lumia 640 XL 回复

你是有多爱vb啊 说实话就拿dotnet来说vb,c艹都只是为了移植,这些新东西也是对于csharp优先一样。 就像一个应用不会刚刚出来就想着本地化。 iOS现在都没有zh-cn的开发者中心。 xamarin做的已经很不错了。 不过standard确实救了vb,虽然我觉得standard仅支持cs更好些(我不是幸灾乐祸,只是讨厌惯了自适应和本地化)。 fsharp是啥?能吃吗?

TonyDeng UID.2870126
2017-08-20 使用 Lumia 950 回复

其实VB和C#都是语言翻译器,最终编译的目标代码都是IL,没有区别的(反编译无法分别是什么语言出来的),因此无所谓挽救。在.net框架上,语言只用于适应原来的习惯,不是依赖平台的,.net是跨平台的。

tmp00000 UID.995403
2017-08-20 回复

QuoteAFAN-World 发表于 2017-8-20 13:35
你是有多爱vb啊 说实话就拿dotnet来说vb,c艹都只是为了移植,这些新东西也是对于csharp优先一样。 就像一个 ...


这可是 .NET 上唯一支持隐式收缩转换并且能通过编译选项调节为强类型的编程语言。用这种语法可以写出看起来很神奇的代码 —— 读起来很像英文,并且电脑认识。 还可以做各种编程语言级别的知识产权保护。比如大公司的职员想抄袭别人的开源代码(忽略 License)。在 GitHub 搜索。他们通常不会去搜 VB。因为 VB 代码写得好的非常清晰易读(尤其是用 Select Case 代替 switch 的那种代码。比 switch 容易理解得多),写得烂的比 js fu*k 还难看(On Error Resume Next 都够让大多数人困惑的)。

tmp00000 UID.995403
2017-08-20 回复

QuoteTonyDeng 发表于 2017-8-20 15:05
其实VB和C#都是语言翻译器,最终编译的目标代码都是IL,没有区别的(反编译无法分别是什么语言出来的),因 ...


某些情况下需要选择用 VB 还是用 C#,这种选择会影响工作效率。有些代码适合用 VB 写,有些适合 C#。

tmp00000 UID.995403
2017-08-20 回复

QuoteAFAN-World 发表于 2017-8-20 13:35
你是有多爱vb啊 说实话就拿dotnet来说vb,c艹都只是为了移植,这些新东西也是对于csharp优先一样。 就像一个 ...


F# 现在处境比 VB 更尴尬。.NET 语言团队大多数人认为 C# 应该是 .NET 语言的先锋,所以 VB 和 F# 被 C# 甩在后面。 但是微软一贯的作风是向后兼容,VB 比 C# 历史悠久,出于兼容考虑在 Windows 上得到了比 F# 更高的优先级。 F# 相反,在 Linux 混得不错,但是在 Windows 处境堪忧,甚至得不到 .NET Native 支持。

tmp00000 UID.995403
2017-08-20 回复

QuoteAFAN-World 发表于 2017-8-20 13:35
你是有多爱vb啊 说实话就拿dotnet来说vb,c艹都只是为了移植,这些新东西也是对于csharp优先一样。 就像一个 ...


.NET Standard 只支持一种编程语言会给 .NET 生态严重打击。很多类库虽然示例代码只有 C#,但是其实它们是用 VB 写的。很多第三方 .NET Framework 类库用 ILSpy 能看到 My 命名空间,某些可移植类库带有嵌入的 Microsoft.VisualBasic.CompilerServices 命名空间。这些是证据。

AFAN-World UID.2879093
2017-08-20 回复

Quotetmp00000 发表于 2017-8-20 20:29
这可是 .NET 上唯一支持隐式收缩转换并且能通过编译选项调节为强类型的编程语言。用这种语法可以写出看起 ...


隐式收缩转换并且能通过编译选项调节为强类型,,, 强迫症犯了,你走开 {:6_230:}

AFAN-World UID.2879093
2017-08-20 回复

Quotetmp00000 发表于 2017-8-20 20:40
.NET Standard 只支持一种编程语言会给 .NET 生态严重打击。很多类库虽然示例代码只有 C#,但是其实它们 ...


生态严重打击? ,,,那我就不知道了,生态是个微妙的东西 那你说秦始皇统一货币是促进了地区交流还是阻碍了多元文化发展? dotnet究竟要统一还是包容?政治家的事,与我无关{:6_230:}{:6_230:}{:6_230:}

tmp00000 UID.995403
2017-08-20 回复

QuoteAFAN-World 发表于 2017-8-20 20:44 生态严重打击? ,,,那我就不知道了,生态是个微妙的东西 那你说秦始皇统一货币是促进了地区交流还是阻碍 ...
至少他们现在的决定在我看来没错。只用 C# 的人使用 用其它编程语言编写的类库只要看到的是 C# 代码示例,就不会觉得有什么不妥。 VB 和 F# 缺少示例代码,可以用 Telerik 的代码转换器解决 VB 示例问题,F# 的我不清楚。但是用 C# 的人不必操心这些东西。 一个软件团队里面混合不同编程语言的代码也不会带来什么麻烦,除非有公开用指针类型或者明确要求用后期绑定这种刁钻的写法。每个人写自己的项目文件,每个项目编译成 .NET 模块 而不是 程序集,最后把模块链接成一个程序集,就可以兼顾内部的多语言和外部只有一个程序集。

tmp00000 UID.995403
2017-08-20 回复

本帖最后由 tmp00000 于 2017-8-20 21:09 编辑

QuoteAFAN-World 发表于 2017-8-20 13:35 你是有多爱vb啊 说实话就拿dotnet来说vb,c艹都只是为了移植,这些新东西也是对于csharp优先一样。 就像一个 ...
为了移植其实只是一方面原因。今年上半年微软发表的 .NET 策略里面提到每个 .NET 语言有它们不同的使命。 C# 语法主体经典并且细节先进,负责拉拢现有开发人员(其实是对标 Java 和 Python)。 VB 通俗易懂,负责拉小白入坑(现在国外教育机构确实比较赞同这个定位, VB 市场份额很大一部分是他们贡献的)。 F# 采用函数式编程思想,负责搞科学计算。 C++/CLI 和 C++/CX 负责处理复杂的优化问题。

AFAN-World UID.2879093
2017-08-21 使用 Lumia 640 XL 回复

Quotetmp00000 发表于 2017-8-20 21:06
为了移植其实只是一方面原因。今年上半年微软发表的 .NET 策略里面提到每个 .NET 语言有它们不同的使命。 C# ...


赞同,确实各有各的好处。 然而让ms同时更新这么多语言的支持也略微困难了点吧。 估计今后慢慢都会加入支持。就像本地化有群众翻译一样,这方面估计也会有诸如tk这样的良心第三方吧(虽然不能干了所有的事比如compiler)。 期待期待?{:6_230:}

vbfool UID.352791
2017-08-21 回复

现在的VB和C#,已经快长得没啥区别了,也就函数的关键字之类的小区别,最大的区别不就是有没有分号么。
反倒是F#,比学VB的人怕是都要少很多,和Java平台的Scala完全没得比啊。

tmp00000 UID.995403
2017-08-21 回复

QuoteAFAN-World 发表于 2017-8-21 00:36
赞同,确实各有各的好处。 然而让ms同时更新这么多语言的支持也略微困难了点吧。 估计今后慢慢都会加入支持 ...


Telerik 在 .NET 真心良心。代码转换器,反编译器,各种控件和数据处理类库。我虽然在与他们竞争的公司工作,但仍然对他们保持尊敬。

vbfool UID.352791
2017-08-22 回复

Quote***链接停止解析***
Telerik 在 .NET 真心良心。代码转换器,反编译器,各种控件和数据处理类库。我虽然在与他们竞争的公司工 ...


“竞争的公司”是哪?方便透露不?C1?

tmp00000 UID.995403
2017-08-22 使用 Lumia 950 XL 回复

Quotevbfool 发表于 2017-8-22 01:32
“竞争的公司”是哪?方便透露不?C1?


GC

AFAN-World UID.2879093
2017-08-22 使用 Lumia 640 XL 回复

Quotetmp00000 发表于 2017-8-21 21:38
Telerik 在 .NET 真心良心。代码转换器,反编译器,各种控件和数据处理类库。我虽然在与他们竞争的公司工 ...


tk堪称业界良心。 然而像tk这样有良心的不多了。

vbfool UID.352791
2017-08-22 回复

Quote***链接停止解析***
GC


葡萄城?确实是个牛逼的地方啊。

xi****ng UID.831636
2017-08-22 回复

大学里面的VB课程都是给商学院的妹子上了,计算机专业的都没有这门课。

TonyDeng UID.2870126
2017-08-22 使用 Lumia 950 回复

Quotexianmeng 发表于 2017-8-22 21:12
大学里面的VB课程都是给商学院的妹子上了,计算机专业的都没有这门课。


不是同一个VB

tmp00000 UID.995403
2017-08-23 回复

Quotexianmeng 发表于 2017-8-22 21:12
大学里面的VB课程都是给商学院的妹子上了,计算机专业的都没有这门课。


大学大多数在教老掉牙的版本。现在版本号都 15 了,学校还教辣鸡 6.0 坑人。

tmp00000 UID.995403
2017-08-23 回复

本帖最后由 tmp00000 于 2017-8-23 23:37 编辑

安卓的文件选取器太难用了。跟 WP 8 时代一样。甚至比它还难用,因为打开指定拓展名的文件还要用 MimeType。可是我打算移植的某些程序要打开 *.vb 文件,它们没有 MimeType, 需要改清单定义。 ***图片停止解析*** 图中 Async 版本的文件选取是我自己包装的。多写了40行VB代码和5行C#代码,非常不爽。

TonyDeng UID.2870126
2017-08-23 使用 Lumia 950 回复

Quotetmp00000 发表于 2017-8-23 23:32
安卓的文件选取器太难用了。跟 WP 8 时代一样。甚至比它还难用,因为打开指定拓展名的文件还要用 MimeType ...


没统一内核的手机版系统的API古古怪怪,桌面端最旧的系统都比它好用。

本站使用Golang构建,点击此处申请开源鄂ICP备18029942号-4联系站长投诉/举报