跨平台.NET开发了解编程语言规范

但是随着技术发展,出现了一些通用的平台,例如.NET和Java,逐渐这
【菜科解读】
在许多年前,“语言”就等同于“平台”,例如C,C++以及最早的Ruby和Python等等。
但是随着技术发展,出现了一些通用的平台,例如.NET和Java,逐渐这些平台上的语言也越来越多。
再后来,某些语言在不同平台上的实现也越来越多,事情也变得有些复杂。
技术在发展,但是从目前社区的讨论中,我发现许多朋友的观念还没有跟上。
简单地说,如今的观念,一定要从“语言即平台”切换成“语言及平台”,当分清“语言”和“平台”这两个不同事物之后,许多问题才能讨论地清楚。
例如我写过一个太监系列《Why Java Sucks and C# Rocks》,其中谈的是C#和Java两个“语言”而不是两者的“平台”。
编程“语言”其实是一种“规范”,它涉及了程序员在使用这门语言时的文本表现形式(这里暂不考虑其他形式的语言),而“平台”则包括对这个规范的“实现”(广义的“平台”还包括整个生态环境等等)。
C#和Java分别处在各自的平台上,但许多语言其实是跨多种平台的。
例如Python,Ruby,Scala,Clojure,JavaScript等等,数不胜数。
同样,一个平台上也会出现多种语言。
而且事实上,由于.NET和Java这样的平台越来越成熟,语言的设计及实现者也都越来越倾向于让语言运行在“某个平台”上。
这么做可以尽可能地利用前人的成果,而不是什么都要自己从头做起。
其实基本的原则就是这么简单,但是真正在考虑问题的时候,可能就不是那么容易了,我们必须时刻保持清晰地头脑。
例如有个人说“C#比Java执行效率高(或低)”,这个说法是否正确?其实这种说法有很大问题。
因为我们知道,在这里C#和Java都是“语言”,它们的执行环境CLI及JVM一样都是“规范”,但“执行效率”是一种表现,这和“实现”得如何有很大关系。
例如,C#是运行在.NET平台还是Mono上(它们都是CLI规范的具体实现),Java是运行在JRockit还是Hotspot(前者是Oracle的JVM商业实现,后者是Sun的开源实现——当然现在也是Oracle的),亦或是Android的Dalvik上?很显然,不同实现之间的表现会有区别,不可一概而论,否则也不会出现 JavaScript引擎的效率之争了。
同理,有些人使用Hotspot上的Java性能来说明Java在Android上运行时的表现,这也是不对的 ——要知道Google在和Oracle的Java专利官司中不断强调Dalvik不是“Oracle那种Java”。
作为结论,Java在 Android上的表现的确不错,但论证方式也必须正确才行。
当然,有时候“规范”也会影响到“实现”,例如一个动态分发的语言,其性能基本百分百不如在编译期绑定的静态语言。
所以事情原本就是这么复杂,做一个思路清晰的程序员并不是件容易的事情。
顺便一提,女人在这方面的头脑一般都比较清楚,她们一般都知道骑白马的不一定是王子,也有可能是唐僧。
对于俗称“.NET程序员”的那一批人来说,分清“语言”和“平台”更是一件十分重要的事情,因为C#语言可以说是目前“平台”、“实现”最为广泛的“语言”之一了。
之前我为InfoQ写过一篇文章,其中提到Mono的创始人Miguel de Icaza给出的目前C#语言可执行平台的“不完全”列表,几乎覆盖了各种流行的操作系统及设备等等,例如:* Windows* Mac OS* Linux / BSD / Solaris* Windows Phone,Android,iOS* XBox 360,Wii,PS3* ……因此就拿C#这一种语言来说,“实现”也会各自略有不同,这便是所谓的“配置(Profile)”。
目前至少已经有这么多配置了:* .NET 4.0配置* Silverlight配置* Windows Phone 7配置* XBox360配置* Mono核心配置:与.NET配置相同,可以在Linux,MacOS X,Solaris,Windows和BSD里使用。
* .NET Micro Framework* Mono的iOS配置* Mono的Android配置* Mono的PS3配置* Mono的Wii配置* Moonlight配置(与Silverlight兼容)* Moonlight扩展配置(Silverlight和完整的.NET 4 API)“配置”之间的区别主要体现在执行环境的能力(例如iOS不支持运行时代码生成,因此支持AOT但不能JIT)以及类库的覆盖面上(例如XNA类库只存在于 Windows Phone及XBox 360等游戏平台),不过它们终究实现了一个核心规范,因此我们可以说在不同平台上都可以“使用.NET进行开发”。
Mono实在是一个了不得的作品,它让我知道了“跨平台原来可以这么做”。
之前我也写过有关跨平台的问题,其中谈到在“客户端的跨平台一般都很难得到最佳的体验”,这个论点的最佳证明便是Java。
但Mono走的却是另一条跨平台的道路,它在各平台上实现了核心的执行引擎和类库之外,解决“体验”的方式便是在各个平台上提供原生平台的绑定。
这样无论是在Mac OS,iOS,Android上都可以得到原生应用的体验。
我很奇怪为什么有些搞.NET的人一边说.NET的适用面太小,一边却忽视 Mono的成果,在我看来这完全是“自作孽不可活”,我愈发觉得是否接受Mono是判断一个.NET程序员是否优秀的重要准则。
其实Mono实在很火,因为他为广大.NET程序员扩展了工作领域,使用现有的知识来开发iOS等平台的应用程序,还可以共享代码,何乐而不为?前不久苹果发布了Mac上的App Store,于是MonoMac也立即推出了面向AppStore的打包器,Frank Krueger也开始着手移植它的作品iCircuit,成果显著。
因此在我看来,这才是一个现代.NET程序员该有的工作台:
当然,我知道大家都是聪明人,反对的理由总是找得到的,这里先随便列上几条。
有人说,用MonoTouch等.NET实现来做iOS开发“不正式”,我说,这个说法颇有“血统论”的意味,不过既然在Windows上用C++和 Delphi都很正式,那么为什么在iOS上使用Objective-C才是正途?有人说,MonoTouch性能一定不如Objective-C好,我说,这是猜测,即使性能不如Objective-C,看看各种案例也知道这在实践中并不是问题(事实上MonoTouch的前身便是Unity3D对 Mono的使用,而iOS上实在有太多游戏在使用Unity3D了)。
还有人说,MonoTouch或MonoDroid没有大公司支持,不靠谱,我说,您之前不是经常鄙视类似“开源没有微软靠谱”或是“微软开发人员只知道微软技术”这种说法的吗?还有人说……不过,这些说法还是挡不住出现基于MonoDroid的DeltaEngine,这是个跨平台的游戏引擎,在Mono的支持下可以运行在Linux,MacOS X,iOS和Android上,在微软.NET支持下可以运行在XBox 360,Windows Phone 7自然还有普通的Windows系统上。
在CES 2011上NVidia演示了一个游戏,Soul Craft,它运行在LG Optimus 2X,这个游戏正是使用了DeltaEngine。
对于我们来说,最大的限制其实还是眼界和思维,突破这一屏障也是我组织nBazaar技术沙龙的目的之一。
本周六将会举办第三届nBazaar技术交流会,具体信息请访问http://nbazaar.org/。
如果您还没有报名,也可以直接前来,也欢迎带上感兴趣的朋友或同事。
根据以往的经验,场地就像乳沟,挤挤总是有的……
跨平台,.NET,开发,了解,编程语言,规范,在,许多,数据恢复工具开发详解:揭秘核心技术与最佳实用方案
为了应对这种情况,数据恢复工具应运而生,成为科技爱好者及普通用户重拾宝贵数据的关键助手。
本篇文章将深入探讨数据恢复工具的核心技术,以及在实践中如何有效应用这些工具。
工具原料:系统版本:Windows 11, iOS 16, Android 13品牌型号:Dell XPS 13, MacBook Air M2, Samsung Galaxy S23, iPhone 14软件版本:EaseUS Data Recovery Wizard 16.0, Stellar Data Recovery 11.0, Recuva 2.3一、数据恢复工具的核心技术1、磁盘扫描与数据识别数据恢复工具的主要功能之一是扫描磁盘以识别可恢复的数据。
工具使用先进的扫描技术,如深度扫描,通过检查磁头与磁盘的交互模式来检测残留数据,即使在文件被标记为删除时,这些数据仍可能存在于磁盘上。
2、数据重建与修复算法除了简单的文件恢复,现代工具还集成了复杂的重建与修复算法,以处理损坏的文件系统。
这些算法可以重建扇区损坏的文件,使用户能恢复可译信息。
事例上,在一次数据丢失事故中,使用EaseUS Data Recovery成功地重建了损坏的.docx文档。
3、文件格式识别与支持现今的数据恢复工具支持大多数流行文件格式,如照片、视频、文档和压缩文件。
有些软件甚至可以识别特定应用生成的文件格式,在特定恢复任务中如探囊取物般实现资料找回。
二、数据恢复工具的使用场景与性能1、意外删除文件的恢复当用户意外删除文件时,这些工具无疑是救星。
例如,Recuva便以其快速文件恢复功能而闻名,仅需几步操作即可快速扫描并找回珍贵数据。
2、格式化磁盘数据的恢复格式化过的磁盘往往被认为是数据不可恢复的境地。
然而,使用Stellar Data Recovery工具,可以帮助用户在意外格式化后找回失落的数据,包括各类复杂格式的文件。
3、应用在移动设备的数据恢复除个人电脑,移动设备的文件丢失同样有工具保障。
iOS系统下的iPhone,通过第三方工具如iMobie PhoneRescue,可帮助用户恢复被误删的信息、联系人甚至应用数据。
在Android上,EaseUS MobiSaver同样能够有效地恢复各种数据。
三、数据恢复的背景知识1、数据冗余与恢复技术发展史数据冗余技术是数据恢复的基石之一,其概念可以追溯至20世纪中叶,当时磁带数据冗余成为信息存储的重要手段。
诸如网状码(Reed-Solomon)等线性编码算法的应用,提升了数据恢复的精度与效率。
2、影响数据恢复的因素选择正确的数据恢复方案,首先要考虑设备、数据类型和丢失原因。
例如,硬件损坏往往需要专业的硬盘修复技术,而简单的文件删除则更适合软件恢复工具。
内容延伸:1、数据安全与备份的重要性无论数据恢复技术如何先进,数据备份仍是不容忽视的防线。
定期的备份习惯,不仅能保障数据安全,同时也减轻了数据恢复带来的风险与成本。
用户应熟悉不同的备份方案,如云备份、外部硬盘备份等,以筑牢数据的安全屏障。
2、商业应用中的数据恢复在企业环境下,数据丢失对业务连续性的影响不容小觑。
例如,银行等金融机构常借助专业数据恢复解决方案团队来执行重要数据的修复。
Understanding企业级别的恢复需求及高效利用工具,是应对大规模数据挑战的重要策略。
3、未来数据恢复技术趋势随着人工智能和机器学习的迅猛发展,未来的数据恢复工具将更加智能化。
AI技术能够通过预测分析,提高数据恢复的成功率,甚至在数据被大幅修改情况下仍能恢复完整信息。
科技爱好者可关注相关技术发展,了解前沿进展提升恢复技能。
总结:本文介绍了数据恢复工具的核心技术,以及在常见的删除或损坏场景下如何操作这些工具以找回丢失的数据。
科技的不断进步使得数据恢复的成功率与多样性显著提高,相关技术的发展为我们提供了坚实保障。
然而,数据安全的基石在于预防而非事后弥补,良好的备份习惯不可或缺。
无论是科技爱好者还是普通用户,理解并善用这些技术与工具,将为我们在信息化时代保驾护航。
[PHPStudy]——打造高效便捷的PHP开发环境
工具原料:电脑品牌型号:Dell XPS 15操作系统版本:Windows 10软件版本:PHPStudy 2019一、PHPStudy的优势1、简单易用:PHPStudy提供了一键安装的功能,无需繁琐的配置,即可快速搭建PHP开发环境。
2、集成多个工具:PHPStudy集成了Apache、MySQL、PHP等多个工具,方便开发者进行PHP项目的开发和调试。
3、自动更新:PHPStudy会定期更新软件版本,保证开发者始终使用最新的PHP开发环境。
二、如何使用PHPStudy1、下载安装:从PHPStudy官网下载安装包,双击安装包进行安装。
2、一键启动:安装完成后,点击桌面上的PHPStudy图标,即可一键启动PHPStudy。
3、创建项目:在PHPStudy的主界面上,点击“新建项目”按钮,填写项目名称和路径,点击确定即可创建项目。
4、配置数据库:在PHPStudy的主界面上,点击“数据库管理”按钮,进入phpMyAdmin界面,可以进行数据库的创建和管理。
三、打造高效的PHP开发环境1、使用代码编辑器:选择一款功能强大的代码编辑器,如Sublime Text或PHPStorm,提供代码自动补全、语法高亮等功能,提高开发效率。
2、使用调试工具:PHPStudy集成了Xdebug调试工具,可以方便地进行代码调试,定位问题。
3、使用版本控制工具:使用Git等版本控制工具,可以方便地管理代码版本,协作开发。
结论:PHPStudy是一款高效便捷的PHP开发环境,通过使用PHPStudy,开发者可以快速搭建PHP开发环境,提高开发效率。
同时,结合代码编辑器、调试工具和版本控制工具,可以打造一个更加高效的PHP开发环境。