范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

C语言PK各大编程语言

  本文转自公众号"CSDN",ID:CSDNnews)
  作者 | Serdar Yegulalp
  译者 | 王艳妮,责编 | 屠敏
  C语言五十年来一直是软件开发的一种主力语言。以下是它在如今的2019年与C ++,Java,C#,Go,Rust和Python抗衡的方式。
  以下为译文:
  没有什么技术可以应用长达50年之久,除非它真的比大多数其他东西都要好用——对于一种计算机行业的技术来说尤其如此。自1972年诞生以来,C语言一直保持生龙活虎的状态,时至今日它仍然是我们用来搭建软件世界的基础建筑材料之一。
  但有时一种技术能够长期存在,只是因为人们还没有来得及发明新的东西来取代它而已。在过去的几十年里,出现了许多其他语言——其中一些明确地被设计用于挑战C的主导地位,有些语言试图凭借自己的人气慢慢瓦解C语言的统治地位。
  为C需要被替换掉的观点争辩是简单的。编程语言研究和软件开发实践都暗示了如何比C更好地去做事。但历经数十年的研究和开发,C语言的地位却依旧稳固。很少有其他语言能够在性能、裸机兼容性或通用性等方面击败它。不过,2018年C是如何与那些明星编程语言竞争的呢,其中细节仍值得一看。
  C vs. C ++
  当然了,C最常被拿来与C ++进行比较,正如其名称本身所暗示的那样,C++作为对C语言的扩展而被创建出来。C ++和C之间的差异可以概括为C++更加广泛(褒)或更加宽泛(贬),具体取决于这个问题你是问的C还是C++程序员。(笑)
  虽然C ++的语法等方面仍然是类C的,但它提供了许多在原生的C中本不可用的非常实用的功能:命名空间(namespace),模板(template),异常(exception),自动内存管理(automatic memory management)等等。需要顶级性能的项目,例如涉及数据库,机器学习系统的项目通常是用C ++编写的,以便项目能尽可能地榨取以及利用到每一点性能。
  此外,与C相比,C ++在持续地更加积极地扩展。即将推出的C ++ 20会带来更多功能供开发者享用,包括模块,协同程序,同步库,以及概念,这些使模板更易于使用。C standard的最新版本只进行了少量更新,并侧重于保持向后兼容性。
  事实上,C ++中的所有附加功能同样也可能成为累赘。而且是很大的累赘。您使用的C ++专属功能越多,引入的复杂度就越高,对结果的修正就越困难。将自己局限于仅一个C ++子集的开发人员可以避免许多开发中严重的坑和额外负担。但是有些团队想要从根儿上防范C ++的过度复杂性。坚持使用C能迫使开发人员将自己局限于一个子集。例如,Linux内核开发团队就直接避开了C ++。
  选C而不选C++对您——以及任何将会维护你代码的开发人员——来说都是可行的,通过采用强制简约主义来避免与C ++的复杂性纠缠。当然,C ++拥有丰富的高级功能,这是有它自己的道理的。但如果极简主义更适合当前和未来的项目——以及负责项目的团队——那么还是选C更明智一些。
  C vs. Java
  几十年了,Java仍然是企业软件开发的主力军之一——并且也是宽泛而言的开发的主力军之一。许多最重要的企业软件项目都是用Java编写的——包括绝大多数Apache Software Foundation项目——而Java仍然是开发企业级需求项目的可行语言。
  Java的语法从C和C ++中借鉴了很多东西。但是,与C不同的是,Java默认情况下不会编译为本机代码。相反,Java运行时环境,JVM,JIT(实时)编译Java代码以在目标环境中运行。在适当的情况下,JIT编译后的Java代码可以接近甚至超过C的性能。
  Java背后的"一次编写,随处运行"的理念也允许Java程序在目标架构上进行相对较少的调整即可运行。相比之下,虽然C已被移植到许多架构中,但任何给定的C程序仍可能需要重新量身定做才能在,打个比方,Windows与Linux,两种不同的os之间正常运行。
  这种可移植性和强大性能的结合,以及庞大的软件库和框架组成的生态,使Java成为构建企业应用程序的首选语言。
  Java输给C的地方是一个Java从未打算竞争的领域:靠近底层结构运行,或直接与硬件打交道。C代码被编译成机器代码,由进程直接执行。Java被编译成字节码,这是一种随后会被JVM解释器转换为机器代码的中间代码。此外,尽管Java的自动内存管理在大多数情况下都是个优点,但C更适合于必须充分利用有限内存资源的情况。
  也就是说,在某些方面,Java在速度方面可以接近于C。JVM的JIT引擎在运行时根据程序行为优化例程,允许进行许多类型的优化,而这些优化是在未提前编译的C中无法实现的。虽然Java运行时自动执行内存管理,但一些较新的应用程序可以解决这个问题。例如,Apache Spark部分地通过使用绕过JVM的自定义内存管理代码来优化内存中处理。
  C vs. C#和.Net
  在推出近二十年后,C#和.Net 框架仍然是企业软件世界的主要组成部分。有人说C#和.Net是微软对Java的回应——一个托管代码编译器系统和通用运行库——C和Java之间的许多种对比也适用于C和C#或.Net之间。
  与Java(以及某种程度上来说Python也是如此)一样,.Net提供跨各种平台的可移植性和庞大的集成软件生态系统。考虑到.Net世界中有多少面向企业的开发,这些都是不小的优势。当您使用C#或任何其他.Net语言开发程序时,您可以使用为.Net运行时编写的大量工具和库。
  .NET另一个类似Java的优势是JIT优化。C#和.Net程序可以按照C语言提前编译,但它们主要由.Net运行时进行即时编译,并使用运行时信息进行优化。JIT编译允许对无法在C中执行的运行着的.Net程序进行各种就地优化。
  与C一样,C#和.Net提供各种直接访问内存的机制。堆,栈和非托管系统内存都可以通过.Net API和对象访问。开发人员可以使用.Net中的unsafe模式来实现更高的性能。
  但这些都不是没有代价的。托管对象和unsafe对象不能被任意交换,并且它们之间的编组会降低性能。因此,要最大化.Net应用程序的性能需要将托管和非托管对象之间的变动保持在最低限度。
  如果您无法承担托管与非托管内存之间变动造成的性能损失,或者.Net运行时对于目标环境(例如,内核空间)来说是一个糟糕的选择,或者可能根本不可用,那么C就是你所需要的。与C#和.Net不同,C被默认可以解锁对内存的访问权。
  C vs. Go
  Go的语法很大程度上借鉴了C——花括号作为定界符,语句以分号结束,等等。精通C的开发人员通常可以毫不费力地直接使用Go,甚至算上Go的独有功能,如命名空间和包管理,对开发人员来说也并不困难。
  代码可读性是Go的指导设计目标之一:让开发人员可以轻松掌握任何Go项目,并在短时间内熟练掌握代码库。C代码库可能很难理解,因为它们很容易聚集大量专属于某个项目或某个团队的宏和和#ifdef。Go的语法及其内置的代码格式以及项目管理工具旨在避免这种结构性问题。
  Go还提供了诸如goroutine和channel之类的附加功能,用于处理并发性和组件之间的消息传递的语言级别的工具。C需要开发者手动完成或由外部库提供,但Go提供了开箱即用的这些功能,使得构建需要这些功能的软件变得更加容易。
  Go与C最深层次的不同之处在于内存管理方面。默认情况下,Go的对象会被自动管理并自动进行回收。对于大多数编程工作来说,这非常方便。但这也意味着任何需要确定性处理内存的程序都会更难编写。
  Go确实包含了用于绕过Go的某些类型处理安全性的unsafe包,例如使用Pointer类型读取和写入任意内存。但unsafe会附带一个warning说用它编写的程序"可能是不可移植的,并且不受Go 1兼容性指南的保护。"
  Go非常适合构建命令行实用程序和网络服务等,因为这些很少用到太过细致的操作。但是,如果是低级设备驱动程序,内核空间操作系统组件以及其他需要严格控制内存布局和管理的任务,那么就最好用C来创建。
  C vs. Rust
  在某些方面,Rust是对C和C ++创建的内存管理难题的回应,也是对这两种语言的许多其他缺点的回应。Rust编译为本机机器代码,因此就性能而言,它被认为与C相当。但默认情况下,内存安全才是Rust的主要卖点。
  Rust的语法和编译规则可帮助开发人员避免常见的内存管理错误。如果程序有一个不符合Rust语法的内存管理问题,它就不会被编译。刚接触这种语言的新手,特别是以前用C语言的开发者,由于C语言为这类bug提供了充足的容错空间,所以他们接触Rust的第一步是学习如何安抚编译器。但Rust的支持者认为,这种短期的痛苦有一个长期的回报:更安全的,不会减缓速度的代码。
  Rust还通过其工具改进了C语言。默认情况下,项目和组件管理是Rust提供的工具链的一部分,与Go相同。有一种默认的,推荐的方法来管理包,组织项目文件夹,以及处理C需要单独处理的其他许多事情,每个项目和团队以不同的方式处理它们。
  然而,在Rust中被吹捧为优势的东西对于C开发者来说可能并没有太大吸引力。Rust的编译时安全功能无法禁用,因此即使是最小的Rust程序也必须符合Rust的内存安全限制。默认情况下,C可能不太安全,但在必要时它更灵活,更宽容。
  另一个可能的缺点是Rust语言的大小。即使考虑到标准库,C的功能也相对较少。Rust功能集非常庞大并且还在不断增长。与C ++一样,较大的Rust功能集意味着更强大的功能,但也意味着更高的复杂度。C是一种较小的语言,但更容易在头脑中进行建模,因此可能更适合那些对Rust来说太小,不值得大动干戈的项目。
  C vs. Python
  当今,每当谈论软件开发时,Python似乎总是能出现在对话中。毕竟,Python是"对所有项目的第二佳语言",毫无疑问是最通用的语言之一,拥有数千个第三方库。
  Python强调的,以及它与C最不同的地方,是有利于开发速度而不是执行速度。一个可能需要一个小时才能用另一种语言写出来的程序——比如C——可能用Python几分钟内就能写好。另一方面,该程序在C中执行可能需要几秒钟,但需要一分钟才能在Python中运行完。(一个很好的经验法则:Python程序通常比它们对应的C语言程序运行速度慢一个数量级。)但是对于现代硬件上的许多工作,Python已经足够快了,这是它如今广泛应用的一个重要原因。
  另一个主要区别是内存管理。Python程序完全由Python运行时进行内存管理,因此开发人员不必担心分配和释放内存的细节。但同样,开发人员的轻松也是以运行时性能为代价的。编写C程序需要严格关注内存管理,但生成的程序通常是纯机器速度的黄金标准。
  但是,在二者的血脉中,Python和C共享一个深层的关系:Python运行时参考是用C语言编写的。这允许Python程序包装用C和C ++编写的库。第三方库的Python生态系统的很多重要模块,例如机器学习方面的库,其核心是C代码。
  如果开发速度比执行速度更重要,并且如果程序的大多数高性能部分可以被隔离到独立组件中(而不是遍布整个代码),那么纯Python或Python和C库的混合使得会是比单独使用C更好的选择。否则的话,C仍然是老大。原文:https://www.infoworld.com/article/3402023/why-the-c-programming-language-still-rules.html
  本文转自公众号"CSDN",ID:CSDNnews)

飞瀑之下,必有深潭铄耳EJ09与EJ07M试听有感作为一枚资历尚浅的小白烧油,在我原有的认知里,总觉得入耳塞所用到的驱动单元无非要么动圈要么动铁,颇有一种非黑即白的感觉。不过HiFi技术其实也是在不断进步的,尤其是近年来,平板振膜iQOOz5和红米note10pro相比较,该如何选?如果非要在这两款手机中选择一款手机进行购买,小芳我个人是会更加倾向于红米note10pro这款手机会更多一些的。我给到的理由有以下几点,大家不妨参考一下。理由一首先红米note10华为nova9Pro和红魔6Pro相比较,该如何选择?就小芳个人而言,这两款手机是非常好选择的,因为两款手机的目标顾客人群是不一样的。华为nova9Pro这款手机主打的是轻薄机身以及出色的拍照能力,就小芳个人而言,华为nova9ProMotoEdge轻奢版和真我Q3Pro狂欢版之间,选择哪款好?如果非要在这两款手机中选择一款手机进行购买,小芳建议大家在预算足够的情况下,还是优先考虑MotoEdge轻奢版这款手机会更多更好一些。我给到的理由有以下几点,大家不妨参考一下。理由很便宜的iPhoneSE3,支持5G,但它可能不是你想要的小屏旗舰相较去年的iPhone12mini,苹果在今年更新的iPhone13mini应该更符合大部分用户对小屏手机的使用需求。它有着更低的价格更大的存储容量,更重要的是续航终于体面起来了。苹果还要推出小屏旗舰?网传iPhoneSE3将投产,外形还吃老本?苹果上个月发布了iPhone13系列新机,作为一年一更的高端手机,iPhone13系列保持着一如既往的产品设计理念。虽然iPhone13系列在性能屏幕等方面迎来提升,但是外观并没有深度体验realme真我GT系列几款产品后,还是它最值得买realme手机是是一个研发和创新实力非常强悍的手机厂商,也是一个新兴的,面对年轻人的手机厂商,其旗下的GT系列几款产品一经上市,便备受欢迎。今天我们来对比一下,GT系列这几款手机微信青少年模式上线监护人授权功能北京商报讯(记者魏蔚)10月11日,微信正式发布iOS8。0。15新版本,升级后的微信青少年模式上线了监护人授权新功能。家长可以通过这一功能管理孩子使用微信的情况。开启该功能后,青中国信通院星火链网主链与以太坊实现跨链互通10月9日消息,据中国信通院CAICT微信公众号消息,近日,星火链网主链完成针对以太坊的跨链组件研发,与以太坊跨链互通,相关源代码已面向社区和公众开源。据了解,去年8月,中国信通院Epic反垄断案再起波澜苹果申请推迟调整AppStore规则财联社(上海,编辑夏军雄)讯,据法庭文件显示,苹果公司周五向美国法官申请推迟修改AppStore规则的最后期限,并针对与游戏开发商EpicGames的反垄断案提起了上诉。美国加州法小米还将带来三款新机均搭载骁龙870时间已经正式进入了第四季度,如果你以为各大厂商的发新机步伐到此就结束的话,那就真是太年轻了。今日据数码闲聊站的爆料称,小米至少还将会带来三款搭载骁龙870处理器的手机,代号分别为p
什么是激光?激光武器的威力有多大?它的弱点是什么?什么是激光?那就是利用光学原理制造出来的物质,它会在光与热相交织产生剧烈反应,形成一种激光束,由于电流和摩擦产生高温,它就会释放出强烈的电子波。电子波的作用主要在于破坏和杀伤敌人的为什么不建议买激光电视?因为它是智商税产品,谁买谁吃亏随着激光技术的逐渐成熟,电器行业突然出现了一种名为激光电视的商品,与普通电视相比,价格高了一倍不止,虽然宣传噱头很足,但实际上它是智商税产品,本期文章结合激光电视的结构应用的技术价国产手机隐形巨头,蝉联非洲销量冠军,正式进军5G市场文球子审核子扬校对知秋对于国内手机品牌,很多消费者多少都有些了解,像华为小米OV,以及他们旗下的子品牌,都深受众多消费者的欢迎,而国内消费者购机基本上都是从这些品牌中选择。不过,在智能投影行业发展势头不减,AWE2022助力产业迈向全球化随着智能投影仪技术的发展,家用投影产品越来越智能化,且在产品亮度分辨率色彩等性能上越发强劲,对比传统电视,投影仪正在成为更多年轻人的首选。投影仪市场快速扩容,吸引了越来越多品牌的加氪星晚报丨腾讯云在南美洲首个数据中心正式开服新东方在美国开设中文线上课,子公司承担转型大公司阿里健康2022财年上半年收入93。6亿元,同比增长30。736氪获悉,24日晚间,阿里健康发布2022财年中期业绩公告。截至2021年9月30日的六个月内,阿里健康收入为9创新专利人体工学,西伯利亚维京战舰电竞椅荣耀上市国内电竞游戏耳机领导品牌西伯利亚首款专业电竞椅维京战舰将于11月26日正式上市!对于这款完美结合了北欧神话及历史艺术与现代人体工学技术的电竞椅,亮相时就吸引了无数玩家关注。此次终于警惕!苹果原包装已被国内仿制iPhone13恐有假货此次的iPhone13系列,不止像上一代的iPhone12系列一样,包装中没有充电器,而且就连包装外部的塑料包装都没了。美其名曰环保,取代塑料包装的则是带背胶的手撕贴纸,有些用户表做到院士的医生能拿多少年薪?这个问题有点意思。像我这样的小医生,根本没接触到这个层次,哪怕是打句话的机会都没有。现在我们讨论院士的收入,可能如同乞丐讨论皇帝的收入差不多。不过既然是乞丐,八卦一下院士的收入也无俄罗斯芯片90依赖进口,没有光刻机,为何不怕美国卡脖子?看到这样的问题,估计俄罗斯人会诡异地笑了,卡脖子?俺没有脖子,你怎么卡?是的,俄罗斯的芯片虽然90以上依赖进口,但人家根本不怕制裁。无论是美国的山姆大叔,还是欧洲的各路鬼神,俄罗斯秦腔梅花奖获得者有哪些人?中国戏剧梅花奖是中国戏剧表演艺术最高奖,始创于1983年,2007年更名为中国戏剧奖梅花表演奖,是中国戏剧奖的子奖项之一,也是中国戏剧界优秀中青年演员的最高奖项。从1984年第一届同样20000mAh的充电宝为什么一些个头很小,而小米这样大厂一般做的很大?同样20000mAh的充电宝为什么一些个头很小,而小米这样大厂做的跟砖一样?答这种说法似乎有黑小米充电宝嫌疑。小米的各种电子产品还算是讲良心的一个企业,虽然说它会有一些瑕疵,但它这