读Linus Torvalds发表批评C++的文章和孟岩BLOG回帖有感

声音特征提取--Demon谱分析(舰船水声) 不同频带的DEMON谱线相互之间也不一样,有的频带内会发生线谱遗失,有的频带内的线谱并不是真正的谱线。当舰船航速达到某个极限时,螺旋桨的高速旋转将产生空化噪声,由螺旋桨产生的一系列周期信号被空化噪声调制,在频域上表现为将低频的离散线谱线性搬移到较高频率噪声所处的频率周围,这些周期信号在频域是离散的线谱系列,对应舰船的轴频、叶频以及谐波频率,由于舰船辐射噪声低频部分还有其它噪声源,很难从低频段直接提取出螺旋桨产生的线谱系列,而是要先对高频段的调制信号进行解调,通过低通滤波得到信号的低频包络谱,即。 阅读详情

 
Torvalds可能是愤然于缺乏规范开发的程序员所写的糟糕代码进而迁怒于C++,并且积怨可能从他从前用C++开发Linux失败开始。
我想说的是抛开你具体的应用环境来讨论语言啊,设计方法啊什么的没什么实际的意义。我们都是为了更好的做好自己的事,编程不是什么大不了的事,也不高深。但究其具体应用就有不同的选择。OO很好,但不是放之四海而皆准的万能之法。对于孟岩的说法我比较认同:“C++语言主要是用来支持别的语言的”,他所处的位置本身就是一个比较中间的位置,偏底层他并不像C那样简约直接,论OO他并不像JAVA那样完全的面向对象,所以说他是比较中间的语言比较好一点或说是支持其他语言的语言更好些。软件开发过程是分层次的,而且根据您的应用领域层次的定义,开发语言的选择都是不同的。没有一个铁的定律说某一层就用XXX语言就最好,别的都白扯,这是一种错误的想法。抛离具体应用而论没什么意义。Torvalds是开发Linux的,一个操作系统,当然要用能开发出高效,简约,直接的代码的语言来开发,所以在他尝试用C++开发失败后他选择了C,然后他比较满意用C开发,并且C也比较适合开发,于是他觉得C好,这是因为他的应用环境应用层次是操作系统开发,脱离了这一具体的应用领域或环境,你干嘛不和JAVA比较呢,怎么老揪C和C++的区别优异呢。Torvalds在系统级开发中最终认可或说回归了C语言是因为他想更好的做好他的事情,编写出更好的Linux OS。然后根据自己多年的经验和多年来看到Linux贡献者中不规范的C++开发者给Linux发展带来的影响(估计是维护规范他们开发的东西或版本控制的时候带来的维护负担太重)发表了自己的看法,这没什么。言论是自由的,导致一个人在特定的场合发表一些言论的因素有很多,没必要加以指责批评。我就看张三不顺眼你能把我怎么样,你非的要跟我讲道理让我喜欢他?

还有就是说到现在Linux OS已经成为了一个大家共同开发的东西,不应该以权威的喜恶来左右。我想说,我们还是应该相信权威的,起码在这一领域他是创始人,层次本身就比我们高,同时他也在努力使这一领域健康良性的发展,所以我们在没达到他那个层次的时候没什么资格来决定这一领域的命运。电影明星喜欢的人很多,这当中也不乏优秀之人,但电影明星适合当国家领导人么?难道就因为喜欢他的人比较多就让他来决定国家命运?

下面是我觉得回帖中比较好的摘录如下:

C语言的简单性恰恰是一种优势。C++的复杂性会使很多人误用。而C语言的简单性,一般情况下都会迫使你使用比较简单的设计,例如C语言不能在语言层次上提供类继承的方式,那么它会迫使你更多的使用组合,而不是继承这样的重用方式,即使你可以用函数指针表的方式实现多态,也不可能象C++那样把类层次扩展了一层又一层,在c语言中,函数指针表的在c语言中以更接近于定义接口的方式被使用。这些都是C语言的简单性迫使你做出的选择。
而很多C++的程序员却在C++的丰富的特性前面忘了简单性原则的重要性

Linux从来都是C的世界,可以说是历史原因,也可以说是Unix文化C++从来都不是Unix下编程必须的,MFC好多年来都是最庞大的C++库(现在是不是我不知道)如果你用Windows下的VC开发,你应该知道MFC中的很多类只是API的简单封装(我估计MS开始也不敢封装的太高级),而这些API原型都是C风格的(我没看过源码,不敢说一定就是C而不是C++写的)我猜想他们是C写的,但是让最终用户通过直接调用API来写GUI程序,代码量是很恐怖的,所以现在我始终认为,C++在Windows平台上的使用,就是简化编程,和提高编程效率而已,而MS在Windows下编程之所以敢大量使用C++完全是因为底层API提供了安全可靠的系统支撑!

让"最终用户通过直接调用API来写GUI程序" 代码量也没那么恐怖, 写好一个框架, 填代码就是了, c++对类的封装(尤其是MFC)能"简化编程","提高编程效率"简直就是一个笑话


C用来实现封装性很简单。比较难以用C直接实现的是继承和多态。不过在现实中继承和多态真的是可以用的少之又少的。很多所谓的继承和多态的“设计”完全可以用基于策略的方式来完成。基于策略的方式在C里用函数指针或者表驱动完全可以做到。很多不得不用C++高级特性的“设计”,其实从一开始就使用Java甚至script更容易做到。OO并不是模块化和可维护性的唯一可行方式,甚至不是最优的方式。而C++的OO实现也不是很好的实现。

马克思说:“人类和动物的区别在于会制造和使用工具”
大大们发明了计算机,你可以不用打算盘了
大大们发明了键盘,你可以不用在纸条上打孔了
大大们发明了汇编,你不用拿表查01了
大大们发明了C,你不用了解太多寄存器了
大大们发明了C++, 你发现写代码简单了
大大们发明了java,你发现写代码人效高了
大大们发明了C#,你发现用C++的人越来越少了
大大们用C++尝试写操作系统,发现不好用,说C++写操作系统不好用。
大大们说我们都用C语言吧,大家说,我们不是你,明天还要交活呢,等我们用C语言写个ERP,人家都出

下一代了。

用个比喻:我们村里人用锄头锄地,用爬犁翻地。爬犁有爬犁的用途,锄头也不能丢,因为爬锄不了地。

最近招聘vc的开始多了,原因是没有人了。说话的人多,坚持的人少。

近五年体内微/纳米机器人赋能肿瘤精准治疗综述:以 GBM 为重点 摘要 微/纳米机器人在实体瘤治疗领域展现出突破性潜力,通过主动运动能力解决传统纳米药物递送效率低、渗透不足等核心问题。2021-2025年间形成三条技术路线:1) 磁驱、声驱等运动增强递送实现深层渗透;2) 与免疫治疗融合实现原位免疫唤醒;3) 针对胶质母细胞瘤开发跨屏障递送系统。研究重点从单一运动性能转向"运动-分布-疗效"的系统评价,需建立标准化指标评估运动学参数、肿瘤分布均匀性和安全性。未来挑战在于临床转化的可制造性、闭环操控及生物相容性优化,特别是对血脑屏障穿透等复杂场景的系统集 阅读详情

相关推荐

Cube生成定时器2触发双ADC同步采集并用DMA传输

前言 用cube生成一个用定时器触发ADC1,ADC2同步采集的程序,单片机选择的是STM32L476RGT6,用定时器2进行ADC采集触发,更改定时器2的定时周期便可以更改ADC的采样周期,ADC1和ADC2使用同步规则模式,并用DMA进行数据的传输。 STM32的ADC采样完成总共需要的时间是 ADC完成采样时间=采样周期+12个转换周期 举个例子,假如ADC的时钟是15MHz,采样周期是3个周期,3个采样周期加上12个转换周期,一共是15个周期,因为时钟是15MHz,所以完成一次ADC转换总共需要的时

一行代码的博客 4514

为什么Linus说C++是最烂的编程语言?为什么大模型写C++就像是小学生?能打败ai的还是得年轻人

如果你是学习过大模型的话,你就会知道,这玩意就是一个大型盲盒,你永远不知道今天你问它的问题,明天它会给你什么答案。在ai如此狂热的今天,不知道你有没有发现一个问题,那就是大模型做网页是嘎嘎香,一到了C++就是个扯淡的玩意了。那我们就从大模型的训练入手吧~

HJS123456780的博客 1291

[漏洞剖析]JeecgBoot queryFieldBySql注入与JDBC连接滥用:从内存马植入到RCE的完整攻击链

本文深度剖析了JeecgBoot框架中queryFieldBySql接口的SQL注入漏洞及其引发的完整攻击链。攻击者利用该漏洞,通过Freemarker SSTI植入隐蔽的内存马,并进一步滥用JDBC连接测试功能,借助H2数据库特性实现远程命令执行(RCE),揭示了低代码平台中功能滥用与安全配置疏忽带来的严重风险。

weixin_29232121的博客 115

C++为什么不加入垃圾回收机制

Java的爱好者们经常批评C++中没有提供与Java类似的垃圾回收(Gabage Collector)机制(这很正常,正如C++的爱好者有时也攻击Java没有这个没有那个,或者这个不行那个不够好),导致C++中对动态存储的官吏称为程序员的噩梦,不是吗?你经常听到的是内存遗失(me

M-先生 1万+

Mac用户必看:PD虚拟机网络初始化失败的3分钟修复指南(附详细截图)

本文针对Mac用户在Parallels Desktop(PD虚拟机)启动时遇到的“网络初始化失败”问题,提供了快速诊断与修复指南。核心原因是macOS系统更新后权限未正确授予。文章通过详细的三步修复法(关闭进程、修改配置文件、重新授权重启),帮助用户在3分钟内恢复虚拟机网络连接,并附有排查清单与预防建议。

weixin_29231027的博客 538

利用Docker Compose简化openGauss多节点容器化部署

本文详细介绍了如何利用Docker Compose简化openGauss多节点容器化部署,从环境准备到配置文件编写,再到集群部署与验证,提供了一套完整的解决方案。通过Docker Compose,原本复杂的手动部署流程被大幅简化,显著提升了部署效率和可靠性,特别适合企业级开源数据库的高可用架构需求。

weixin_30338481的博客 60

美国政府敦促开发者:停止使用 C、C++

整理 | 屠敏出品 | 优快云(ID:优快云news)“C、C++ 不安全,新应用开发时就别用了,旧应用应该采取迁移行动”,近日,美国白宫国家网络主任办公室(ONCD)在一份主题为《回到基础构件:通往安全软件之路》的 19 页 PDF 报告中强烈呼吁道。其直言,C 和 C++这几种编程语言既缺乏与内存安全相关的特性,又在关键系统中大量使用,可能会带来极大的安全风险,希望开发者抓紧使用“内存...

code小生 216

基于C#通过PLCSIM ADV仿真软件实现与西门子1500PLC的S7通信方法演示

基于C#通过PLCSIM ADV仿真软件实现与西门子1500PLC的S7通信方法演示

Robot_PLC_HMI_Automation 3161

Linux之父又骂C++了(一)

第2学堂-专栏 1万+

计算机组成原理(第三版)唐朔飞-第八章CPU的结构和功能-课后习题

8.1CPU有哪些功能?画出其结构框图并简要说明每个部件的作用。

weixin_45735391的博客 6万+

YOLOv8 Neck改进:BiFPN双向特征金字塔网络解析与实践

本文详细介绍了如何在YOLOv8中集成BiFPN双向特征金字塔网络,包括原理解析、代码实现、配置文件修改和性能分析。BiFPN通过双向特征融合和加权特征机制,显著提升了多尺度目标检测的性能。希望通过本文的讲解,大家能够深入理解BiFPN的工作原理,并成功将其应用到自己的目标检测项目中。如果你有任何问题或建议,欢迎在评论区留言讨论!在下一篇文章中,我们将探讨YOLOv8的其他改进技术,包括注意力机制、新的损失函数等,敬请期待!

QQ_778132974的博客 991

Linux之父炮轰:C++是一门很烂的语言,不会用其重写Linux内核

Linux是一套免费使用和自由传播的操作系统,目前人们所熟知的安卓、统信UOS等都是基于该系统打造,诞生于1991年,由Linus Torvalds发布,他也被成为Linux之父。近期,L...

传智播客的专栏 2471

Apache Kylin 命令注入漏洞复现(CVE-2020-1956)

Apache Kylin 中的静态 API 存在安全漏洞,可以将os命令与用户输入字符串连接起来,攻击者可以在Kylin没有任何保护或验证的情况下执行任何os命令。

0xSec 1558

C++是恐怖的语言?

  Linux创始人Linus Torvalds在当地时间9月6号的一封邮件中这样说道,“C++是一门恐怖的语言,令它更加恐怖的是,许多不合规范的程序员使用它……”(C++ is a horrible language. Its made more horrible by the fact that a lot of substandard programmers use it……)  Li

Microconquer的专栏 1970

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

曾遭 Linus 炮轰“很烂”的 C++,现受开发者支持:Linux 内核应从 C 转到 C++!

整理 | 屠敏出品 | 优快云(ID:优快云news)前有 C 语言当道,后有 Rust “杀入”,时下又有一场关于 C++ 才应该成为 Linux 内核语言的争论被旧事重提了。1 月9 日,Linux 基金会技术顾问委员会成员、长期从事 Linux内核开发的H. Peter Anvin 写了一篇长长的 LKML(LinuxKernel Mailing List,Linux 内核邮件列...

优快云资讯 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

为何 Linus 一个人就能写出这么强的系统,国人却做不出来?

点上方蓝色“菜鸟学Python”,选“星标”公众号重磅干货,第一时间送到 转自:默然 + Coldwings(知乎)www.zhihu.com/question/63187737他是谁,...

cainiao_python的博客 1051

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

linux c++ 函数效率,Linux之父Linus Torvald评价C++

Linux之父:C++一无是处 不适合LINUX内核开发Linux之父Linus Torvalds曾经在三年前,因为微软的一位同学质疑Git用C语言开发,而将C++痛批了一顿。当时,他是这样评论的:C++正处在困境当中,它既无助于简化,以实际用于进行原型化或者简单的GUI编程,又不是像C那样的简洁的系统编程语言,能够积极地鼓励你使用简单和直接的语言构造。2010年6月5日到11日,他又在邮件列表中...

weixin_32083393的博客 710

C++与linus

1、linus炮轰C++原帖(英文) http://thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918 2、2007年,linus之父炮轰C++:糟糕程序员的垃圾语言(中文) 优快云刘江的博客,包括事件前因后果的演变。 http://blog.youkuaiyun.com/turingbook/article/detai...

weixin_30784141的博客 171

Linux之父Linus Torvalds:讨厌C++

"Linux内核的创始人Linus Torvalds最近在一封邮件中说明了内核开发需要使用C语言而非C++的理由。在庞大的项目中,人们对不是自己开发的模块并不了解,能快速理解其他模块中函数的 确切含义才能提高开发效率,而C++引入的各种抽象则使代码变得晦涩难读。 另外Linus还认为C++的内存管理方式很弱智(that idiotic "new" keyword in C++)。邮件最后的总结是:...

weixin_34347651的博客 555

8年后战争又起:Linus Torvalds was (sorta) wrong about C++

语言之争永远是热门的话题,无论你是脱离了语言限制的老手,还是初入IT的新人。2007年的时候,Linus曾在一封邮件中大骂C++。原文链接From: Linus Torvalds <torvalds <at> linux-foundation.org> Subject: Re: [RFC] Convert builin-mailinfo.c to use The Better String Libr

smstong的成长轨迹 2779

Linus Torvalds:“C++ 真是一门很烂的语言!”

整理 | 郑丽媛 出品 | 优快云(ID:优快云news) 他来了他来了!Linus 带着他的“暴脾气”又来了! 近日,Rust 进入 Linux 内核的决定已正式提上议程,上周其内核开发者 Miguel Ojeda 提交了一份在 Linux 内核中添加 Rust 支持的 RFC 引起热议。 对于这件事,许多人自然想知道 Linux 之父——Linus Torvalds 的看法,毕竟这是 Linux 这么多年以来,第一次要在其内核中加入除了 C 以外的第二门编程语言。因而外媒 IT Wire 就此问题

优快云资讯 3万+

Linux之父炮轰C++:糟糕程序员的垃圾语言

 【图灵图书推荐】Linux程序设计(第3版)  众所期待的程序设计圣经【写在前面】此文贴出后,引起了大家的较多关注,是意料之中的事情。毕竟,C、C++、Linux之父,都是大家最最熟悉的东西。但是许多同学把精力放在纯粹语言优劣的争论上,就没有太大意思了。这场争论的主角之一,微软的Dmitry Kakurin有一句话非常正确:“这是一种信仰问题。因此,任何讲道理和争论都会无

书 人 事 37万+

Linux之父Linus Torvalds:C++一无是处

<br />Linux之父Linus Torvalds曾经在三年前,因为微软的一位同学质疑Git用C语言开发,而将C++痛批了一顿(参见Linux之父炮轰C++:糟糕程序员的垃圾语言)。当时,他是这样评论的:C++正处在困境当中,它既无助于简化,以实际用于进行原型化或者简单的GUI编程,又不是像C那样的简洁的系统编程语言,能够积极地鼓励你使用简单和直接的语言构造。<br />2010年6月5日到11日,他又在邮件列表中连续发贴,直截了当地炮轰C++。他明确表示:“我确实不喜欢C++,依我来看,它真的是一门很

ManyTao's Blog 2112

Linux内核的创始人Linus Torvalds 说明了内核开发需要使用C语言而非C++的理由

Linux内核的创始人Linus Torvalds最 近在一封邮件中说明了内核开发需要使用C语言而非C++的理由

JonnyWei的专栏 4837

Linux 25周年:与创始人Linus Torvalds对话

原文:Linux at 25: Q&amp;A With Linus Torvalds 作者: Stephen Cass 译者: 孙薇 责编: 钱曙光,关注架构和算法领域,寻求报道或者投稿请发邮件qianshg@youkuaiyun.com,另有「优快云 高级架构师群」,内有诸多知名互联网公司的大牛架构师,欢迎架构师加微信qshuguang2008申请入群,备注姓名+公司+职位。 编...

博客 2327

linux定时器王贤才,Linux之父Linus Torvald评价C++

Linux之父:C++一无是处 不适合LINUX内核开发Linux之父Linus Torvalds曾经在三年前,因为微软的一位同学质疑Git用C语言开发,而将C++痛批了一顿。当时,他是这样评论的:C++正处在困境当中,它既无助于简化,以实际用于进行原型化或者简单的GUI编程,又不是像C那样的简洁的系统编程语言,能够积极地鼓励你使用简单和直接的语言构造。2010年6月5日到11日,他又在邮件列表中...

weixin_36102930的博客 718
上一篇: NHibernate中文学习资料2
下一篇: 准备把平时写在QQ空间上的一些文章弄到这里来
HowkWolf
博客等级 码龄20年 29粉丝 21原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值