C,C ++,Java,下一步是什么,它将是什么样?

时间:2020-03-06 15:01:51  来源:igfitidea点击:

我们如何看待语言的下一个发展趋势?

解决方案

我们可能会假设C和C ++正在"逐步淘汰",而Java / .Net / Python /无论是"高级"还是"下一站"。

它们都被大量使用(请参阅此站点上标签的数字C或者C ++)。不同之处在于,这两个人都不是编程界的通用语言。过去,大多数应用程序是资源非常有限的系统上的桌面或者DOS应用程序,此外,所有主要的桌面API都是用C或者C ++编写的。所以每个人都学到了这些。

现在更复杂了。语言正成为更多特定于应用程序的语言。当性能很重要时使用C / C ++。当主要性能受到数据库读/写时的脚本语言。 Java和.Net,适用于对性能要求不高的通用桌面应用程序。

与计算机或者电气工程相同。过去,这些领域是最高抽象级别的巨大领域。现在,我们有了各种更高级别的抽象。尽管如此,我们仍然需要人们来进行这种底层的工程。他们仍然有需求。同样,C和C ++将继续在许多环境中使用。例如,我们可能会以为自己可以用Java编写设备驱动程序而感到疯狂,如果有选择和能力的话,也可能会以某种疯狂的态度(但也许不那么疯狂)以C语言编写完整的GUI应用在Java或者.Net中进行操作。

每个工具都有其用途。我希望C,C ++和Java能够发展并继续用于新的和旧的开发。

艾伦·凯(Alan Kay)曾经说过:"实际上,我是用术语"面向对象"来形容的,我可以告诉你我没有C ++。

他正在致力于改变编程的未来

"真正的浪漫即将到来,而且还没有到来。计算机革命还没有开始。不要被大量的资金误入事实上的标准,而这些标准是针对不熟练的买家使用不完整的想法而进行的拙劣改编的。"来源

好吧,我可能还要补充一点,Bjarne曾经说过:"只有两种语言:人们抱怨的语言和没人使用的语言。"

语言的发展填补了其他语言无法解决的利基问题。

语言立足并确立自己的天气完全是另一个问题,与普及程度有很大关系。

接下来是什么?
我看到需要填充的问题是多处理器(或者多核)。当前,所有流行语言利用添加核心的能力都非常有限。基本上,所有当前流行的语言都为开发人员提供了使用内核的非常基本的对象(线程/锁等),然后由开发人员自行尝试使用多核中提供的并行性。

如果有一种语言可以抽象出内核(甚至线程)的概念,并且可以自动利用多核/多处理器体系结构中的内在并行性,那将是一个很好的选择。不幸的是,所有这些语言(我所知道的)仍然是大学的研究项目,不太可能在不久的将来得到真正的采用。

我们暗示着C-> C ++-> Java。
这有点人为,每种语言都代表一种解决问题的方法,每种语言都有内在的问题领域,可以有效地解决问题,而其他问题领域则是该语言的错误选择。

亲自:

  • 我永远不会用Java编写设备驱动程序。
  • 我可能不会用C(我们可能会但不是我)编写后端Web模块。

从短期来看,我希望高级语言会变得更强大,更常用。 Perl 6和Javascript 2.0是等待我们的好例子。

从长远来看,功能语言可能会成为主流,但是我希望不久不会发生这种情况。

C? -哦,但是那是Java :)(对不起,无法抗拒)

下一代语言已经在这里,脚本语言。微软正在开发DLR(动态语言运行时)是毫无疑问的。我认为,未来将被解释(但苦苦挣扎),动态语言,这种语言几乎没有约束并且具有很大的灵活性。

如今,大多数语言的性能约束并不那么重要,或者根本没有人会编写Java或者Capps,但是考虑到CPU速度超快且RAM便宜,我们没有注意到这些高级语言的效率低下。级设计(例如,如果我们有一个1mhz的cpu,则用C而不是C#编写代码。如果CPU以3Ghz的速度运行,则可以随意编写)

所以.. Ruby,Python," Dynamic-C#" ...这些都是未来。当MS发布DLR时,期望它引起很多兴趣,并期望许多公司开始谈论程序员生产力,这是大多数应用程序开发中最重要的部分。

之后,可能是GUI驱动的系统,我们可以在类似UML的系统中将块连接在一起,并向其添加属性以生成生成的代码。

在某些时候,程序将开始编写自己的程序,从而使人在编程方面变得多余。主要的分歧是什么时候会发生。

我不能说C ++和Java,但是C绝对不会走不通...

如果没有大多数的C语言来编写任何类型的操作系统内核,那是几乎不可想象的(好吧,如果我们真的很固执:-P,则可以完全使用汇编语言)。

C基本上是汇编语言的精简包装。它与标准Von Neumann CPU体系结构紧密耦合,因此不需要标准库或者运行时即可实现其大部分功能:指针,字符串,堆栈上的自动变量,整数算术等。

出于同样的原因,C非常适合绝对需要高性能的用户级应用程序,例如乘以巨大的矩阵或者解析复杂的语言。用C语言编写解析器可能很痛苦,但是手动内存管理的速度和效率优势却难以忘怀...

正如其他人提到的那样,语言倾向于适应新技术和新趋势。因此,为了回答该问题,我们首先必须查看计算机的整体未来,并查看最适合这些目的的语言。

例如,以语言发展为例,在开始(:-))中,需要一种语言,以便最大程度地利用有限的可用资源,C符合这方面的要求。随着时间的流逝,软件应用程序的范围越来越广,对基于OO的语言的需求也越来越大,以便于软件重用,更容易的设计等。C++ / Java变得流行起来。

当前,业界越来越倾向于使用瘦客户端UI(即浏览器)完成所有工作的服务器端组件。因此,满足这种需求的语言正变得越来越流行(Ruby,ASP / Java EE语言)。

当最接近的技术流行时,新语言将变得流行。
就个人而言(这是猜测),我认为真正使用多核系统的语言存在很大的范围。这将意味着从一开始就构建多线程,并且可能需要改变方法和思维方式(例如从过程到面向对象)。

如果仅遵循编程语言历史的这一分支,那么我认为可以同时编写JavaScript和C#,因为它们紧随我们提到的这三个之后,共享相似的语法,并且取自前辈。

其他人可能会提到D或者Objective-C(当然它们已经在这里了)。

用下一种语言,我想意思是"下一次成功",因为每个月几乎都有一种新的语言...
我认为这将是一种具有垃圾回收的语言,它可以在具有高度可移植性的Jit字节码上运行。
我无法确定它是面向对象的还是功能性的,具有静态或者动态类型的,但我敢打赌,就像有趣的Fan编程语言一样。

也许我们都错了,它可能只是一种自然语言,具有口头或者图形界面:"将页面的天气框,将其颜色和徽标更改为该颜色,并整合到我的页面中"。

我相信答案是双重的。

首先,客户端应用程序越来越多地实现为基于浏览器的应用程序。要使基于浏览器的应用程序具有与富桌面应用程序可比的外观,我们需要Javascript之类的东西。而且,如果我们对新闻有所了解,我们会看到在加速浏览器中javascript实施方面的巨大努力,以及蓬勃发展的库生态系统,可在浏览器中使用javascript创建响应式,直观GUI。

因此,对于GUI,我相信Java就是未来。

对于后端服务器,我非常怀疑不久的将来会存储一种脚本语言。服务器端软件往往存在数年之久,添加的功能,已修复的错误等全部存在。编写该语言所用的语言不必太快写,而是要易于阅读(维护)。

如果我们在一到两年后重新访问代码以修复该错误,脚本语言往往会更难理解。 (在我看来)这有两个主要原因,但短期内不会消失:

  • IDE难以通过动态语言提供提示
  • 在上下文中,根据定义,工作中可用的上下文信息较少;在Java中,我们知道只能获得X类型。在脚本语言中,我们应该检查所有引用代码,在大型项目中不容易

使用经验丰富的开发人员可以缓解这些问题,但是如果将来唯一有用的开发人员是经验丰富的开发人员,我们将不需要雇用经验不足的开发人员,这将来会给我们带来麻烦。

由于这些原因,我相信下一代服务器端语言是静态类型的。从静态类型的语言中,我认为Cand Java的机会最大,原因是可用的有用库数量巨大,而且这些语言的可读性强。

在我看来,最好是像C ++这样的语言,它的定义更紧凑,标准库更好,本机垃圾收集和本机同步结构。相对的新手应该可以使用它,但是在需要时仍可以为专家提供一种以高效,低级的方式进行编程的工具。我相信D可以满足大多数这些条件,但对我而言似乎不太可能获得成功。

现在已经进行了两年,但是蒂姆·斯威尼(Tim Sweeney)的《下一代主流编程语言:游戏开发者的观点》对此主题引起了有趣的思考。

编程的未来是什么?远离我们所熟悉的语言。

是2009年,我们仍在使用文本编辑器吗?作为项目的一部分,我可以轻松地通过设置属性来构建整个应用程序。除了(主要是数学上的)表达式和字符串值之外,任何地方都没有一行文本。

一名开发人员抱怨"我们无法打印出代码",我回答说:"公司会打印出整个会计结构吗?还是会打印出想要查看的方面,例如现金流量表和余额?床单?"只有进入新的抽象机制,我们才能真正向前迈进。

编程的未来还有待观察,但是我认为正在发生一些激动人心的发展,这些发展最终将使我们摆脱我们已经使用了很长时间的C / C ++ / Java工具。

D语言(尤其是2.0版本)已经从Ruby,Python和许多现代语言中学到了,而没有保持与C的源兼容性,仍然允许对金属的原始访问。这种语言的设计决策是下一代系统和通用编程语言的完美解决方案,甚至内置了功能编程和元编程。