软件设计之美
郑晔
推文科技技术VP,前火币网首席架构师
立即订阅
3198 人已学习
课程目录
已更新 22 讲 / 共 35 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 软件设计,应对需求规模的“算法”
免费
课前必读 (3讲)
01 | 软件设计到底是什么?
02 | 分离关注点:软件设计至关重要的第一步
03 | 可测试性: 一个影响软件设计的重要因素
了解一个软件的设计 (4讲)
04 | 三步走:如何了解一个软件的设计?
05 | Spring DI容器:如何分析一个软件的模型?
06 | Ruby on Rails:如何分析一个软件的接口?
07 | Kafka:如何分析一个软件的实现?
设计一个软件—程序设计语言 (5讲)
08 | 语言的模型:如何打破单一语言局限,让设计更好地落地?
09 | 语言的接口:语法和程序库,软件设计的发力点
10 | 语言的实现:运行时,软件设计的地基
11 | DSL:你也可以设计一门自己的语言
加餐 | 再八卦几门语言!
设计一个软件—编程范式 (9讲)
12 | 编程范式:明明写的是Java,为什么被人说成了C代码?
13 | 结构化编程:为什么做设计时仅有结构化编程是不够的?
14 | 面向对象之封装:怎样的封装才算是高内聚?
15 | 面向对象之继承:继承是代码复用的合理方式吗?
16 | 面向对象之多态:为什么“稀疏平常”的多态,是软件设计的大杀器?
17 | 函数式编程:不用函数式编程语言,怎么写函数式的程序?
18 | 函数式编程之组合性:函数式编程为什么如此吸引人?
19 | 函数式编程之不变性:怎样保证我的代码不会被别人破坏?
加餐 | 函数式编程拾遗
软件设计之美
15
15
1.0x
00:00/00:00
登录|注册

加餐 | 再八卦几门语言!

郑晔 2020-06-19
你好,我是郑晔!
软件设计是一个比较烧脑的话题,对于一些同学来说,学起来还是有一些辛苦的。所以,我准备了这次加餐,让大家在前面高密度地狂奔了一段时间之后,稍微休息一下。
我在第 8 讲中讲了程序设计语言的发展,有同学觉得不过瘾,想了解其他语言的发展过程。那好,我们就来谈谈几门比较吸引眼球的程序设计语言。

C#

当年 Java 开始起势的时候,微软还处于自己的巅峰,它当然不想错过 Java 这么有前景的东西。但是,微软从来就不会老老实实按照标准做事,所以,你会看到微软手中的 Basic 已经很不像 Basic 了,微软的 C++ 也有着自己的扩展。
于是,微软也想做出一个自己的 Java,J++ 就出现了。但是,这不是一个正常的 Java,引发了 SUN 的不满,将微软告上法庭。最终,双方庭外和解,微软不再祸害 Java,J++ 停止更新。
但有一点不得不承认,微软在 Windows 上的 JVM 性能是当时最好的,因为操刀 J++ 的是 Anders Hejlsberg,他是全世界最顶级的程序员。微软为了不与 Java 开启的受控(Managed)代码浪潮擦肩而过,于是,转身又推出了 C# 和.NET。
C# 的初版本简直和 Java 一模一样,一个 Java 程序员几乎不用培训就可以成为一个 C# 程序员。所以,从语言的角度来说,最初的 C# 并没有对行业做出什么贡献。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《软件设计之美》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(12)

  • Kǎfκã²⁰²⁰
    语言的流行通常需要一个杀手级的应用,比如RoR之于Ruby,Docker之于Go,Spring之于Java

    作者回复: 是这样的,杀手级应用助力语言爆发。

    2020-06-19
    7
  • 看了老师的文章 我决定去学学rust

    作者回复: 加油,希望你有收获!

    2020-06-22
    2
  • hello world
    python应该会因为AI继续焕发第二春下去

    作者回复: 这点还真是,Python找到了AI这个增长点。

    2020-06-21
    2
  • 再来二两杜康酒
    个人以为语言应差异化竞争,百花齐放,多出些最佳实践和案例相互成就。
    我比较看好微软的.NET 5.0,立足实际又不乏野心,公司本身也具备做好的条件和能力。不要太在意短期吸粉与排名,做好自我完善和迭代也许就水到渠成了。

    作者回复: .NET 本身的能力只是一方面,还要看微软怎么让它摆脱单一平台的刻板印象。

    2020-06-19
    2
  • escray
    从语言本身来说,我还是比较喜欢 C# 的,多年以前也写过 ASP.NET 的程序。不过 C# 确实“时运不济”,而且替技术人员背了不少黑锅,比如 “ASP.NET 就是慢”之类的。我还是挺喜欢 C# 后来的泛型、Lamda 表达式、LINQ 之类的“语法糖”。

    从就业市场的角度讲,C# 的程序员的平均薪水一直不怎么高(可能是因为上手比较容易),岗位也不多。现在有了 .NET Core,不知道会不会好一点。

    学过一点 JavaScript 和 Node.JS,相比较而言,我还是更把时间投入到 Go 或者是 C# 上面。听了一次前端的直播(Vue.js),我就从入门到放弃了。

    之前是打算去学一下 Go 语言的,不过看了专栏的介绍,觉得 Rust 也是一个好机会。

    作者回复: 每种流行的语言都有它流行的原因,值得探索一下。

    2020-06-23
    1
  • 有学识的兔子
    很感谢老师的分享,开阔了不少眼界。
    由于自己的行业相对比较传统,没有接触特别前沿的领域和技术,不好判定语言的走势。
    就程序设计语言,又让我回想起那句:语言即是程序库,程序库即是语言。语言的出现是伴随着工程问题的出现,通过新的语言特性更好地解决现有的工程问题。
    前段时间阅读了《c++的程序设计与演化》,较直观地看到语言的前世今生,了解语言的历史对写好一门语言也是挺重要的

    作者回复: 一个程序员,保持对技术趋势的关注很重要。

    2020-06-20
    1
  • qinsi
    Wasm最初的规范中不支持GC,所以Rust和C/C++天生都可以"直出"Wasm,Go和Java等就不行。但要让前端开发去掌握系统编程语言还是要求高了点且没必要(其他的选择像是AssemblyScript虽然门槛低一些但还不完整;Yew可以重用一些Elm的经验,但Elm本身也太小众了)。有GC的话虽然影响性能,但确实可以降低语言的门槛。

    作者回复: 感谢你的补充信息!

    2020-06-20
    1
  • 迈步
    看好JavaScript,感觉它的出生起,就奠定了它以无声胜有声,无意胜有意的大道。我走我的路,让别的语言说去吧。

    作者回复: 等着看未来的发展吧!

    2020-06-19
    1
  • 阳仔
    每种语言都有自己解决问题的范畴
    哪个语言更好其实没有很强的可比性,因为每个语言解决的问题不一样
    从发展潜力上看,个人还是比较看好golang和rust
    虽然我自己使用的语言主要是JAVA,kotlin等jvm语言

    作者回复: 找出每种语言解决的问题和方案,可以帮助我们更好地理解程序设计语言。

    2020-06-19
    1
  • 梦醒十分
    好文章,的多读几遍。

    作者回复: 也欢迎分享啊!

    2020-06-19
    1
  • Jxin
    1.微软早期本就是屡战屡败,屡败屡战顽强存活下来的...失利和失败在那个时候也算是家常便饭了。

    2.很遗憾,语言这个话题不敢乱说。虽然也会几门语言,但也就看得懂语法,能写点玩具的程度。也就java熟悉点。只能说,无论以后各种语言多么璀璨。java都挺难退出历史舞台,毕竟在普及程度或则说体量上java占比很高,这算得上已有市场优势。而且java的社区的积累殷实。新语言哪怕只是翻译,一个一个组件改写成自己的程序库也要挺久。所以kt,grovy,scala这些可以基于java程序库开发其实挺好的。能改善java比较死板的语言特性,还能用其丰富的程序库。更何况java还有jvm这个玩意,这玩意可是实现了多语言的虚拟机(jit编译器graal)。(一门语言除了前端编译器(文法解析),是否还应包含后端编译器呢?这是个问题)

    作者回复: Java 在可见的未来都会长期存在,它的生态太庞大了。

    2020-06-19
    1
  • NIU
    一度认为能前后端通吃的语言吧,比如Javascript, 更多新潮需要特性支持的Swift。

    作者回复: JS 能力上没问题,语言拖后腿了。

    2020-06-19
    1
收起评论
12
返回
顶部