为什么总是有人说 Java 啰嗦,却没人说 C++ 啰嗦?

https://ke.qq.com/course/260263?flowToken=1006945

温馨提示,点击报名成功,可领取一份架构师资料,

而且可每天永久免费观看直播,

每天晚上20;00免费分享架构经验

因为Java只支持面向对象一种编程范式。

只支持一种范式,好处是严谨,风格统一;坏处就是呆板、啰嗦。

典型如它的main函数,再也不能像别的语言那样写成一个独立的函数,而是必须包在一个没有实际作用的类里面……

这样“不管有没有必要,反正你必须把任何东西都先弄成类”的要求,显然会导致许多本无必要的间接访问以及由此衍生的其他很多麻烦——和其他语言相比,当然就显得过于啰嗦了。

尤其是早期,相关理论尚未成熟,再加上单一范式的限制,就使得它相对于早已成熟的其他语言,显得表达能力过弱——有一个著名的吐槽,大意就是“之所以Java需要搞出那么多设计模式,就是因为它表达能力太弱,别的语言很简单就能做到的事,它就必须通过设计模式才能拐弯抹角的办到”(当然,这些主要还是面向过程和面向对象风格本身的区别,不能完全算是Java的缺陷)。

与之相反,C++是一种“多范式”语言,非结构化、结构化、面向对象、宏、模板……啥好用你就能得到啥——任何工作,你都有最简化实现它的可能。

但缺陷就是,再也没人能“精通C++”——你可以拿它当C用,当Java用,当object-c用,玩模板黑魔法用……但最好别把它当C++用。不然真没人hold得住它。

当年的Pascal也一样:它仅支持结构化编程一种范式,这种纯粹而“板正”的风格使得它成了当时最佳的“教学语言”,但是很少被用到实际项目中。

而当年的C,它支持结构化编程,同时也允许你任意解释内存数据。这就使得它得到了额外的许多灵活性,甚至到现在都还充满了生命力。

当然,过去和现在情况还不太一样。

过去的编辑器没现在这么强大、智能;Pascal的“板正”没能带来教学时概念清晰之外的更多好处,反而因为单一范式的束缚让人感觉碍手碍脚,自然不是C的对手。

但现代编辑器强大的语法提示功能给了程序员太大方便——“板正”的单一范式强类型语言的语法提示实在太好做太强大了,你甚至很难把语法错误留到后半拉花括号敲出来之前:付出一点点“格式化”的代价,换来这么大的好处……

与之相反,过于灵活随意的C++,它的语法提示可不是一般的难做。

别说200x年前后的“黑暗时代”,哪怕到现在,都还有不少主流编辑器没办法为C++代码提供Java级别的语法提示(我知道现在做的比较好的语法提示,其原理相当于在后台边编译边提示[实际是解析语法树]:而且这个编译器还必须支持“半拉函数”的动态编译,不然很难给出准确的输入建议)。

——亦因此,当年就没人能劝我加入VIM教:在下写C++必用eclipse/VS之类重量级IDE,不然语法提示真没法看(当然,这都是上个年代的老黄历了。现在已经有很多编辑器可以给出高水平的C++语法提示了,甚至可以自动提示模板实例化后的正确参数类型。至于VIM,它很早也已经可以配出基于语法的提示了;不过本人太懒,早年实验几次感觉效果不佳就再也没用它写过C++……)。

类似的,由于编译器发展水平所限,过去的Pascal语法“板正”,使得它需要付出很大的额外性能消耗(因为没有办法像C那样让程序员“抖机灵”);而现在的Java,却因为自己的板正,给了字节码编译器以及即地编译器大量的提示,使得它们得以完成深度优化,从而得到了极佳的执行效率……

时代不一样,配套技术成熟度不一样,很多东西就不一样了。

总之,没有免费的午餐,诸多相关也不是一成不变的;每一种成功语言之所以成功,都有其道理。评论利弊须就事论事,这才不容易翻船……

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356

推荐阅读更多精彩内容

  • TITLE: 编程语言乱炖 码农最大的烦恼——编程语言太多。不是我不学习,这世界变化快! 有时候还是蛮怀念十几、二...
    码园老农阅读 5,331评论 2 35
  • 精心收集整理的教程笔记 第01天 Java基础入门 第1章计算机基础 1.1计算机 计算机(computer)俗称...
    Java帮帮阅读 5,961评论 1 109
  • 今天是欣欣小盆友两周岁生日,为了给这位美丽的小公举庆生,欣妈特意在湘里人家张罗了饭局。欣姨备了漂亮的生日蛋糕,我这...
    风雨梦阅读 604评论 0 4
  • 1.《终身成长》22页 2.《落差》第一章
    kidII阅读 47评论 0 1
  • (一) 木寒再一次和他联系是八年之后。以为内心的波澜早已在时间的缝隙中稀释无痕,而她却分明感觉到那时年少的怦然心动...
    wawayer阅读 163评论 0 0