谢邀
语言设计就是一种工程实践,遂其实没啥错误的说法。
Swift、Golang、C# 都写项目,只能说一下个人体验,不做长篇大论的分析了。
首先说C#吧,虽然和C++一样贯彻一个“C”的名头,但是C#和C++在开发上有着巨大的差异,它是一种可以保证内存安全的语言,而且各项指标其实都在对标Java。个人认为C#就是一种Java的改进,似乎主要是为了吸引Java用户转移到.net平台而设计。
语言上,委托(Delegate)语法的使用让C#跟上了现代编程的潮流,使得闭包、函数式编程的特性比起Java简单了许多,时至今日Java依赖接口实现的匿名函数和闭包特性依然显得要更繁琐一些。另外C#提供了unsafe语法,相当于把C++的一些灵活特性借来用了,算是一种奇技赢巧,也增强了C#和其他语言、环境做双向整合的能力,C#相比Java也是早早的实现了部分的类型推导功能。
总体来说C#的语法适合与Java进行类比,虽然看上去更加先进,不过描述能力也差不多,基目前基本是对标的,确保内存安全,兼容原生数据类型,基于数据、方法封装还有继承、多态的OO编程。
Swift 出现的时间比 C# 要晚很多了,见证了各种新兴语言围剿Java大哥的时代,语言设计理念也不再是给Java打补丁的模式,看上去和Rust有很多渊源,体现了很多先进的设计。
swift 设计上也不算太激进,当然也是可以当作C#、Java那样去用的,只说class、protocol这些设计其实和C#差不多,C#在语言层面上具有的特性现在的swift都涵盖了(早期没有异常机制),而且没有历史包袱看上去会更加简洁。
而更大的变化在于swift大幅强化了类型推导和闭包技术,使得这些现代编程中必不可少的要素真正在语言上成为了一等公民,函数式编程具有良好且完善的工程实用性,不再是C#上那种小甜点技术。有过这方面实践经验的人都知道这些特性的威力,很多修修补补的老大难问题可以釜底抽薪,开发效率是能够大幅提升的,程序逻辑也能写得更纯粹和简洁。
不过个人觉得Swift上手的门槛还是明显高于C#,也高于很多常见的语言,Swift有相对精密的类型推导,又作为内存安全的语言,语言体系上有很多习惯不同于C#、Java这类相对传统的语言,并且语法也相当严格。需要被编译器折磨这各种 "?" 和 "!" ,需要标注逃逸、非逃逸闭包,脑子必须是清醒的...各方面使用的感受来说,用好Swift是有门槛的,需要一定周期进行训练。
最后说Golang
和前面说的 C# 和 Swift 不同,Golang 更像是对 C 的强化和改进,设计目标很明确——后端、中间件、吃高并发。不强调需要多么强大的语言特性或者描述能力,确保内存安全、类型安全,极简且实用至上,编译速度飞快。
Golang 的核心概念,鸭子类型、接口、Goroute 和 channel 都很容易理解,它几乎彻底摈弃了经典的OO抽象,选择了有限度的、更多的支持那些现代编程中最重要的概念:高度实用的类型推导,简洁且完整的闭包支持,便利的并发编程。尤其是把本来大多数语言中作为库特征的线程、队列技术直接纳入了语言特性,这是一种高度工程化的思考方式。
总体来说Golang不是那种追求万能的语言,多范式、大平台的场景下表现都比较弱,非常重要的泛型设计也还只是在起草探索阶段。但是几天内谁都能上手写代码,人人都能高并发,这是 Golang 真的能做到的。
至于他们的前景………………
C# 做Windows端开发还不错,还有Unity之类的专门应用方向。但作为语言来说个人觉得是没啥出彩,即便在M$生态内,同质化的选择也很多,相比Java开发上并没什么过人之处,移动设备、大数据、机器学习很多非常关键的时间节点也没有很好的爆发。
Swift 是Apple的好产品,就看它爸爸的未来了,猫自己学习iOS开发就是从swift上手的,而且也非常推荐,新晋开发者建议也不要在在OC上浪费太多时间了。但是“易学易精”和“生态良好”两个重点swift它都没沾上,所以总体还是人才稀缺,要是没有 iOS 平台,说实话个人觉得没有什么竞争力,可能也就是和Scala一样,作为小众语言,在某些犄角旮旯发挥特别的作用
Golang 国内发展很火,因为语言简单,所以人才很容易培养,生态也逐渐成型。有点开发经验的人几个小时就能上手,如果职业作为后端工程师,怎么说都该学学。当然语言角度看Go并没什么了不起的东西,设计还是太保守了,这可能会限制了它的应用,不敢断言它真就前途光明