校园二手市场网站建设方案留学中介网站建设方案
- 作者: 五速梦信息网
- 时间: 2026年04月20日 07:09
当前位置: 首页 > news >正文
校园二手市场网站建设方案,留学中介网站建设方案,大同建设局网站,毕业设计做网站选题前言 C 可算是一种声名在外的编程语言了。这个名声有好有坏#xff0c;从好的方面讲#xff0c;C 性能非常好#xff0c;哪个编程语言性能好的话#xff0c;总忍不住要跟 C 来单挑一下#xff1b;从坏的方面讲#xff0c;它是臭名昭著的复杂、难学、难用。当然#xff…前言 C 可算是一种声名在外的编程语言了。这个名声有好有坏从好的方面讲C 性能非常好哪个编程语言性能好的话总忍不住要跟 C 来单挑一下从坏的方面讲它是臭名昭著的复杂、难学、难用。当然这样一来熟练的 C 程序员也就自然而然获得了 “水平很高” 的名声所以这也不完全是件坏事。 不管说 C 是好还是坏不可否认的是C 仍然是一门非常流行且非常具有活力的语言。继沉寂了十多年并终于发布语言标准的第二版 —— C11再那之后C 以每三年一版的频度发布着新的语言标准每一版都在基本保留向后兼容性的同时提供着改进和新功能。
- 为什么难学 每次提到 C 编程无论你是使用 C 的开发者还是使用其他编程语言和开发环境的开发者我们对 C 的评价往往都是 “复杂且难学”。为什么 C 会留下这样的口碑追根溯源主要有两个原因。 第一个原因是 C 的包容性即向前兼容。 C 类似 Objective-C是 C 语言的超集它希望尽量向下兼容 C 的一切语法和特性在 C99 标准之前甚至是完全兼容因此足够接近硬件底层。但这是把双刃剑。 虽然 C99 之前语法足够简单但实际使用的复杂性并不低而 C 为了兼容 C 语言的语法付出了很大的代价并在此基础上设计并发展出了多范式的编程模型这意味着可以继续采用面向过程的编程模式也可以转向面向对象。与此同时现代 C 还提供了一组函数式编程工具。 因此在现代 C 得到发展以前实际开发时到底要选用何种范式或者如何合理组合一直让我们很头痛。 C 兼容 C 有什么代价呢比如C 的指针类型声明就备受 C 之父 Bjarne Stroustrup 诟病但是为了向前兼容不得不在这种声明模式下继续扩展。 第二个原因是 C 的设计哲学“不为任何抽象付出不可接受的多余运行时性能损耗”。 纵观 C40 多年的演进历程可以发现每一次演进所支持的都是和编译时相关的新特性而相对来说运行时特性非常少除了在面向对象的编程模型基础上提出的多态以外几乎再无运行时特性其他的均以库的形式提供。这是因为 C 是零成本抽象也就是说开发者在使用 C 表达抽象概念时无需忍受多余的运行时性能开销。 因此虽然 C 具备很多高级抽象的语法特性但在设计与具体使用过程中我们仍然需要考虑各种各样的问题包括基础对象内存模型、虚函数的设计、基于模板的泛型系统、基于模板的静态反射体系以及到目前为止都是由编译器决定可选的垃圾回收在其他现代语言中可以说是必备的特性了这就让我们学习和使用 C 变得更复杂了。 的确这真够复杂的。一门编程语言必定有其局限性这也是为什么 “更为现代” 的 Go 和 Rust 出现了试图解决一些问题特别是安全性方面。 不过作为语言的使用者你肯定会问那今后的 C 学习和使用会有哪些变化呢这个问题有人曾经问过 C 之父 Bjarne Stroustrup。 诸如 Go 和 Rust 编程语言新贵它们在发力解决安全性和易用性方面的问题规避缓冲区溢出这样的漏洞甚至 Linux kernel 也开始考虑或采纳对 Rust 的支持您是否觉得这会成为 C 的一个潜在的巨大威胁和挑战 他的回答简单明了。 “每隔几年就会出现 C 的挑战者我相信它们一定会有支持者。但是C 的独特的语言特性、应用场景以及 C 标准发展的方向会让 C 继续茁壮成长。” 我特别喜欢这个回答。是啊劣势固然存在但 C 经过历史的检验在高性能计算、低延迟处理、图形学领域以及机器学习等前沿技术领域有着难以替代的优势。 C 的 “复杂且难学” 一定程度上取决于向前兼容的能力和设计哲学但正因如此维护多年的系统仍然能与全新开发的系统友好地对接和集成C 的包容性和多样性也让它极具发展力。 自 C11 标准诞生以来我们正式迈入现代 C 世界而 C20 及后续演进标准作为继 C11 之后的又一次重大变革给我们带来了新思想、新工具让我们从容面对以往难以解决的问题。
- C的意义 C 程序员应该都听到过下面这种说法 C 是一门多范式的通用编程语言。 多范式是因为 C 支持面向过程编程也支持面向对象编程也支持泛型编程新版本还可以说是支持了函数式编程。同时上面这些不同的范式都可以在同一项目中组合使用这就大大增加了开发的灵活性。因此C 适用的领域非常广泛小到嵌入式大到分布式服务器到处可以见到 C 的身影。 下面是一些著名的用到 C 的场合 大型桌面应用程序如 Adobe Photoshop、Google Chrome 和 Microsoft Office大型网站后台如 Google 的搜索引擎游戏如 StarCraft和游戏引擎如 Unreal 和 Unity编译器如 LLVM/Clang 和 GCC解释器如 Java 虚拟机和 V8 JavaScript 引擎实时控制如战斗机的飞行控制和火星车的自动驾驶系统视觉和智能引擎如 OpenCV、TensorFlow数据库如 Microsoft SQL Server、MySQL 和 MongoDB 有些同学可能会觉得这些应用场景似乎和平时的开发场景有点远啊你的感觉是对的。有些传统上使用 C 的场合现在已经不一定使用 C最典型的是个人电脑上的桌面应用。以前 Windows 下开发桌面应用常常用 MFC微软的 C 框架。目前很流行的 Visual Studio Code 主要是用 TypeScript 写的不是 C。 C 的传统领域有被侵蚀的风险那是因为和它相竞争的语言远远不止一个可以说是上下夹攻。 如果专注性能和最小内存占用的话C 仍然是首选——嵌入式领域用 C 非常多而 Linux 也是用纯 C 写的。如果专注抽象表达和可读性的话那 Python 之类的脚本语言则要方便得多。图形界面GUI编程传统上是 C 的地盘但近年来 C# 和 JavaScript 占领了很大一部分市场。游戏算是 C 的经典强项了但有了 C 写的游戏引擎游戏用 C# 写也没啥问题了——你可能不一定知道Unity 游戏引擎上的首选开发语言是 C#而王者荣耀是用什么游戏引擎呢答案正是 Unity —— 所以王者荣耀可以认为是用 C# 开发的。还有Go 和 Rust 也加入了战团对 C 形成了一定的竞争…… 目前跟 C 定位差不多、能有直接竞争关系的也就是既支持高度抽象、又追求高性能的通用编程语言其实只有 Rust 一种。而 Rust 远没有达到跟 C 一样的成熟和普及程度。这也可以从 TIOBE 的排名看出来C 是第 4 位而 Rust 是第 25 位。 另外和 C 的兼容性也是 C 的一大优势。虽然现在很多大型程序都混杂了多种语言但在小项目里减少语言的数量可以简化开发和部署。
- 什么时候该用C C 既然性能又好又支持抽象为什么没有更流行呢 C 比起 C 来要更安全更不容易出现缓冲区溢出这类漏洞但跟没有指针概念的语言比起来它仍然是一种“不安全”的语言。我的个人经验完成同样的功能C 需要的代码行数一般是 Python 的三倍左右而性能则可以达到 Python 的十倍以上。 那么问题来了你在开发上额外付出的时间能从性能上省回来吗 显然这取决于你开发软件的用途和开发时间。举个例子如果你用 Python 开发需要一天运行需要十秒并且不需要反复运行那么转用 C 开发就意味着开发费用也许要增加两倍开发加运行的总时间增加两天大亏。 反之如果用 Python 开发还是需要一天单次运行需要十秒但是软件会作为服务长时间运行、每天被调用十万次。在这种情况下明显你就需要多台服务器来支撑其使用了。这时如果用 C 开发会需要额外的两天但跟 Python 相比部署上有望节约十分之九的硬件和电费 —— 那就很值了。 简言之当你的软件属于运算密集或者内存密集型你需要性能、且愿意为性能付出额外代价的时候应该考虑用 C特别在你的代码需要部署在多台服务器或者移动设备的场合。反之如果性能不会成为你开发的软件的瓶颈那 C 可能就不是一个最合适的工具。 此外在嵌入式应用的场景那就根本不是值不值、而是行不行的问题。如果程序完成一个功能不能在指定的若干毫秒、甚至微秒内完成那产品根本是失败、不可用的。在这种场合能和 C 竞争的只有 C但 C 是一种开发效率更低、更需要堆人力的语言了。在嵌入式开发使用 C 的最大障碍可能不是技术而是人力资源——搞嵌入式开发的程序员可能大多都习惯使用纯 C 了。 由于 C 是解决性能问题的利器短时间里在市场上没有真正的竞争对手对 C 的需求会在相当长的时间里一直存在尤其在大公司和像金融机构一样对性能渴求的地方。 顺便提一句C 之父 Bjarne Stroustrup 目前就职的地方便是摩根斯坦利。 4. 如何学习C 作为很多聪明人使用过的语言C 在某些场合也可能被用来炫技写出除了本人之外谁都看不懂的高抽象代码。这恰恰是 Bjarne 想努力抵制的方向。他想让 C 对初学者变得更为友好也明确提出过他不希望 C 是一种让人们耍机灵的语言而是一种让人们更易于使用的语言。 学习 C 语言就像学一门活跃使用中的外语你不要期望能够掌握所有的单词和语法规则 —— 那对于世界上 99.999999% 的人来说是不可能的。但语言是服务于人的语法规则也是服务于人的是为了让人们能够更好地沟通和表达。虽然 C 的每一个新标准都是让语言从定义和规则的角度变得更复杂但从用法上来说新标准允许人们能够更简单地表达自己的计算意图。跟学外语一样我们需要的是多看多写掌握合适的 “语感”而不是记住所有的规则。 Bjarne 有一个洋葱理论 抽象层次就像一个洋葱是层层嵌套的。如果想用较低的抽象层次表达较高的概念就好比一次切过了很多层洋葱你会把自己的眼泪熏出来的。与这个思路相反教 C 往往有一种不好的倾向从那些琐碎易错的底层教起自底向上使得很多人常常在尚未领悟到抽象的真谛之前就已经被 C 的复杂性吓翻从入门到放弃或者在学了基本的 C 语法和 class 之后就满足了错过了高级抽象带来的全新境界。他主张学习应当自顶向下先学习高层的抽象再层层剥茧、丝丝入扣地一步步进入下层。如果一次走太深的话挫折可能就难免了。 最后分享一个c/c后端开发的学习知识图谱摘自零声教育的大纲对标腾讯T9职级技术栈腾讯认证的 c后端开发是一个庞杂的技术栈因为没有统一的开发框架并且应用行业非常广泛。所有涉猎广泛这里就把c/c后端开发的技术点进行整理总结看完以后不会让你失望的。 精进基石高性能网络设计基础组建设计中间件开发开源框架云原生性能分析分布式架构上线实战 部分试听视频 6种epoll的设计方法单线程epoll、多线程epoll、多进程epoll 4种内存泄漏的解决方案每一种背后都有哪些隐藏技术 5000道C“八股文”还需要死记硬背吗90分钟梳理清晰 C后端必读7个开源项目源码redis、mysql、nginx、protobuf… 免费学习地址c/c linux服务器开发/后台架构师 需要C/C Linux服务器架构师学习资料加qun812855908获取资料包括C/CLinuxgolang技术NginxZeroMQMySQLRedisfastdfsMongoDBZK流媒体CDNP2PK8SDockerTCP/IP协程DPDKffmpeg等免费分享 1、精进基石分为四个方面数据结构设计模式c新特性Linux工程管理 数据结构部分 设计模式 C新特性 linux工程管理 2. 高性能网络设计网络编程网络原理协程ntyco用户态协议栈ntytcp 网络编程 网络原理 自研框架 纯c实现的协程2000行代码 自研tcp协议栈 高性能异步io机制io_uring 3. 基础组建设计分为3部分 池式组件高性能组件开源组件 池式结构 高性能组件 开源组件 4、中间件开发专栏 redis mysql kafka gRPC nginx 5. 开源框架 游戏后端开源框架 skynet 分布式API网关 DPDK 高性能计算CUDA 6、云原生专栏 docker kubernetes 7、性能分析专栏 性能与测试工具 观测技术bpf与ebpf 内核源码机制 8、分布式架构专栏 rocksdb TiDB 分布式服务 9、上线项目实战可以写入简历的两个实战项目让面试不再为没有项目发愁 1、图床共享云存储 2、微服务即时通讯
- 上一篇: 校友网站建设电商就业前景
- 下一篇: 校园二手网站设计论文公司装修报价表






