时间:2022-10-09 17:55:31 | 浏览:2941
原文链接:
https://baijiahao.baidu.com/s?id=1693215018575246509
这是一个复杂的问题,结合在一起:事实,过时的事实,夸大的说法和根深蒂固的未经证实的信念。
事实:
-学习C比C ++容易得多:
一个好的Java或Python程序员在使用C指针时会遇到一些问题,比如缺少类,但是学会可能只需一两个月。这是一些雇主愿意投资的东西。相比之下,要想达到C ++的合理水平可能要花费一年的时间。不是专家水平,只是合理水平。与C相比,这是获得新人才的一大不利条件。
C ++与C的表面相似性引起很多问题:
最佳C ++实践与C和Java最佳实践完全不同。因此,熟练的C程序员往往会在工作量,可读性,错误和运行时速度方面低效率地编写C ++代码。(更正:错误创建效率更高)。一个好的C程序员可能会以C ++的方式使用C ++造成麻烦。经验丰富的C ++编码人员将轻松避免这些问题。
典型的错误包括:使用(原始)指针,手动管理资源,通过值而不是通过引用传递参数,(过度)使用不安全的C操作,使用宏,转到,既不使用range-for也不使用auto,未正确使用重载,以及还有很多。这些错误对于初学者来说是很自然的,并会在以后引起很多麻烦。
C ++中的幕后资源管理:
例如,琐碎的事可能会在堆上分配内存。这可能会在许多以堆分配为忌讳的嵌入式系统上引起麻烦。有很多解决方法,但是它们需要有关分配器的纪律和知识。std::string
C ++中的异常代价:
异常支持实际上在CPU方面是免费的,但就展开信息占用的RAM而言,其开销为非零。这使得C ++在嵌入式系统上更成问题。可以禁用异常,但这会使错误处理复杂化,尤其是在构造函数中。
大型标准C ++库:
即使输入最小的可执行文件,标准C ++库的目标代码通常也很大。这是实现的问题,某些编译器可能能够减小此大小。同样,可以避免占用所有这些内存的标准C ++部分(例如语言环境和iostream),但是那样的话,它就不会完全是C ++。
大C ++代码的编译比编译类似的C代码要慢:
希望C ++模块可以解决此问题(在C ++ 20或C ++ 23中)。但是目前,编译速度是许多聪明人已经从事了十多年的一个实际问题。我希望模块能够将其纳入C ++ 20,并且将得到修复。在此之前,有多种方法可以通过更智能的软件工程来最大程度地减少此问题,并且已经有很多关于该主题的CppCon演示。
过时的事实:
C比C ++具有更好的硬件支持。十年或两年前曾经如此。如今,即使是GCC(最便携的编译器)也是用C ++编写的。这意味着,如果GCC可以是系统上的本机编译器,则C ++可用。如果GCC可以交叉编译,则很有可能可以为系统编译C ++。总体而言,只要编译器团队愿意移植GCC(甚至是clang)而不是开发自己的编译器,C ++就可以像C一样可移植。
但是请注意,正如我在上面的事实部分中所写的那样,移植标准库可能是一个问题。这主要是由于其大小以及对堆的使用。移植库的另一个障碍是底层原语,这对于移植来说可能并不重要。这并不意味着核心语言的可移植性不如C。
夸大的说法:
引用Linus对C ++的仇恨的人们忘记了在1991或1992年的某个时候,Linux已成功使用G ++而不是GCC进行了编译。当时,G ++极具bug,并且生成的代码比GCC差得多。不仅如此,它还早于C ++标准。当时,G ++甚至没有适当的模板支持。Linux内核长期未使用G ++进行编译。
我想许多C程序员都被旧的C ++编译器困扰了,形成了他们的见解,并且厌恶。从那时起,可怕的C ++神话开始传播。实际上,C ++曾经是可怕的。有趣的是,有些学校仍在教授古老而又可怕的C ++(Borland C ++ ,Sergey Zubkov对“哪个是C语言的更好编译器,Dev C ++或Turbo C?”的回答)。
没有事实根据的信念。
C ++有许多问题和弊端,但是最大的反对不是植根于工程学或计算机科学,而在于心理学。
不要误会我的意思,在C ++和C中也有很多不好的的事情。但是,很多次决策不是基于这些事实,而是基于信念。
但是,即使是聪明人,也会不惜一切代价抹黑与他们的信念相抵触的证据。
01.介绍篇操作系统及开发系统02. 入门篇03.提高篇03.精通篇C语言精通大牛阶段C语言EasyX图形编程如果你与我志同道合于此,很愿意与你交流如果你喜欢我的内容,欢迎关注和支持C语言基础入门资料:素材资源:想要资源的小伙伴可以可以【点
前言C语言属于高级程序语言的一种,它的前身是“ALGOL”。其创始人是布朗·W·卡尼汉和丹尼斯·M·利奇。C语言问世时是带有很大的局限性,因为它只能用于UNIX系统上。然而随着科学技术的进步,计算机工业的发展,C语言逐渐脱离UNIX。198
C语言是一种结构化的编程语言。它也称为面向函数的编程语言。C语言是由美国贝尔实验室(AT&T)的Dennis Ritchie于1972年开发的。1968年,丹尼斯·里奇(Dennis Ritchie)开始研究诸如BCPL,CPL之类的编程语
原文链接:https://baijiahao.baidu.com/s?id=1693215018575246509这是一个复杂的问题,结合在一起:事实,过时的事实,夸大的说法和根深蒂固的未经证实的信念。事实:-学习C比C ++容易得多:一个
C语言是一门面向结构化的高级编程语言(也有人认为它是中级语言),用于通用编程需求。基本上,C语言是其基本语法和库函数的集合,因此程序员定义自己的函数并且将其包含在C语言库中也是很方便的。C语言的主要用途是编写其他编程语言的编译器、操作系统、
上一篇文章中,简单地介绍了一下什么是编程,以及编程根据编译运行的方式有哪些分类,还附带一些些小小的学习建议。从这篇文章起,就正式进入了C语言学习中。C语言简述首先来认识一下,什么是C语言?C语言是一种计算机程序设计语言,于1972年诞生于美
前言作为理工科的我们,看到一些理论、概念和一些术语,就是脑瓜疼。在大学时,这些知识,很多时候都是作为填空题,最终的答案就跟四级作文差不多,答案脑洞大开。回归正题,其实,有很多东西我们只需要了解一下就好了,知道有这么一回事。例如,C语言是谁搞
看了此文后,我想对于您学习此语言一定有很大的帮助,同时也能了知晓如何用最短的时间学会C语言以及掌握C语言的精髓所在。谈及C语言,我想凡是学过它的朋友都有这样一种感觉,那就是“让我欢喜让我忧。”欢喜的是,C语言功能非常强大、应用广泛,一旦掌握
学C语言不知道从哪儿下手?学习框架都帮你列好了!在未来计算机专业讲又要迎来一批新生小鲜肉!C语言入门到入土,从长发飘飘到秃顶的老铁也越来越多,其中,想自学成才的也占了不少数;想笨鸟先飞的也占有不少数。传说中的C语言就是那么刺激和高挑战没有基
C语言入门了解篇-C语言编译流程(面试常见问题)当我们安装了集成环境之后,编写.c文件,一按下图红色框框的按键即“编译并运行”,就可以得到一个“.exe”后缀的可执行的C程序文件,这期间并非只有一道工序,而是分别经过了预处理、编译、汇编和链
一、C语言程序的构成与C++、Java相比,C语言其实很简单,但却非常重要。因为它是C++、Java的基础。不把C语言基础打扎实,很难成为程序员高手。1、C语言的结构先通过一个简单的例子,把C语言的基础打牢。C语言的结构要掌握以下几点:(1
C语言是一种计算机程序设计语言,它既有高级语言的特点,又具有低级汇编语言的特点。它可以作为系统设计语言来编写工作系统应用程序,也可以作为应用程序设计语言来编写不依赖计算机硬件的应用程序。因此,它的应用范围非常广泛。C语言的诞生及发展历程如图
很高兴你能光临小编寒舍首先感谢百忙之中你能从万千文章中点小编得专属页面。这不是娱乐篇,这是学习道场。开始前,小编就做一个简单得自我介绍:(开启装逼模式)我就是传说中写文章通俗而不庸俗,说话风流而不下流,智慧与美貌并重,英雄与侠义得化身得小编
C教程更多C/C++学习资料 私密我“代码”,即可获取C是贝尔电话实验室的Dennis M. Ritchie于1972年开发的一种通用的,程序性的,命令式的计算机编程语言,用于开发UNIX操作系统。C是使用最广泛的计算机语言。它与Java编
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都