您认为下一代语言会是什么样子?
答案 0 :(得分:7)
您可能认为C和C ++正在“逐步淘汰”,Java / .Net / Python /无论是“前进”还是“下一站”。
它们都被大量使用(参见本网站上标签的数字C或C ++)。不同之处在于,任何人都不再是编程世界的通用语言。过去,大多数应用程序是资源非常有限的系统上的桌面或DOS应用程序,而且所有主要的桌面API都是用C或C ++编写的。所以每个人都学到了这些。
现在它更复杂。语言正在变得更具针对性。性能很重要时的C / C ++。当您的主要性能达到db读/写时,脚本语言。 Java和.Net用于通用的,非性能关键的桌面应用程序。
与计算机或电气工程同样如此。在过去,这些是最高抽象级别的巨大领域。现在我们有各种更高级别的抽象。尽管如此,我们还是需要人们来做这种低级别的工程。它们仍然需求旺盛。以同样的方式,C将继续在许多环境中使用,C ++也是如此。例如,你会疯狂地认为你可以用Java编写一个设备驱动程序,如果你有选择和能力的话,你也会在C语言中编写一个完整的GUI应用程序(但可能不那么疯狂)用Java或.Net来做。
每个工具都有其用途。我希望C,C ++和Java能够不断发展并继续用于新旧开发。
答案 1 :(得分:5)
我不能代表C ++和Java,但C肯定不会无处可去......
在C中编写任何类型的操作系统内核都是不可想象的(如果你真的很顽固,你可以完全使用汇编语言:-P)。
C基本上是汇编语言的优秀包装。它与标准的Von Neumann CPU架构紧密耦合,无需标准库或运行时即可实现其大部分功能:指针,字符串,堆栈上的自动变量,整数运算等。
出于同样的原因,C非常适合绝对需要高性能的用户级应用程序,例如乘以巨大的矩阵或解析复杂的语言。用C语言编写解析器可能会很痛苦,但手动内存管理的速度和效率优势很难被忽略......
答案 2 :(得分:2)
Alan Kay曾经说过“其实我用”面向对象“这个术语,我可以告诉你我没有考虑到C ++。”
他正在努力改变编程的未来
“真正的浪漫已经过去,未来还未来。计算机革命还没有开始。不要被不完整的不完整的不完整的买家的大量资金流入糟糕的事实标准所误导想法。“ source
好吧,我可以补充一点,Bjarne曾经说过“只有两种语言:人们抱怨和没人使用的语言。”
答案 3 :(得分:2)
语言不断发展,以填补其他语言未涵盖的利基问题。
语言占据一席之地并建立自己的天气完全是另一个问题,与人气有很大关系。
接下来会发生什么? 我看到需要填充的问题是多处理器(或多核)。目前,所有流行语言都具有非常有限的利用额外核心的能力。基本上所有当前流行的语言都为开发人员提供了使用内核的非常基本的对象(线程/锁等),然后让开发人员尝试利用多核提供的并行性。
拥有一种抽象出核心概念(甚至是线程)的语言并且自动利用多核/多处理器架构提供的强大并行性将是一件好事。不幸的是,所有这些语言(我所知道的)仍然是大学的研究项目,不太可能很快看到真正的应用。
你暗示有一个进展C - > C ++ - > Java的。
这有点人为,每种语言都代表一种解决问题的方法,每种语言都有固有的问题域,在这些域中它可以有效地解决问题和其他问题领域,而这种语言将是一个糟糕的选择。
个人:
答案 4 :(得分:2)
C#? - 哦,但那是Java :)(对不起,无法抗拒)
下一代语言已经在这里,脚本编写。毫无疑问,Microsoft正致力于DLR(动态语言运行时)。我认为未来将被解释(但是JITted),动态语言几乎没有约束和灵活性。
现在大多数语言的性能限制并不那么重要,或者根本就没有人会编写Java或C#应用程序,但考虑到CPU速度超快,而且RAM很便宜,我们没有注意到效率低下这些更高级别的设计(例如,如果你有一个1mhz的cpu,你用C编写你的代码,而不是C#。如果你有一个运行在3Ghz的CPU,你可以随意写它)
所以...... Ruby,Python,“Dynamic-C#”......这些都是未来。当MS发布DLR时,期望它对它很感兴趣,期望很多公司开始谈论程序员的工作效率,这是大多数应用程序开发中最重要的部分。
之后....可能是一个GUI驱动的系统,您可以在类似UML的系统中将块连接在一起,并为它们添加生成生成代码的属性。
答案 5 :(得分:2)
我相信答案是双重的。
首先,客户端应用程序越来越多地作为基于浏览器的应用程序实现。要为基于浏览器的应用程序提供与富桌面应用程序相媲美的外观和感觉,您需要类似Javascript的东西。如果您稍微关注这个消息,您会看到为加快浏览器中的javascript实现所做的巨大努力,以及一个繁荣的库生态系统,它可以帮助您在浏览器中使用javascript创建响应式,直观的GUI。
因此,对于GUI,我相信未来就是Javascript。
对于后端,服务器,我非常怀疑不久的将来会有一个脚本语言存储。服务器端软件往往存在多年,添加功能,修复错误等等。编写的语言编写速度要快得多,但易于阅读(维护)。
如果您在一两年后重新访问代码来修复该错误,那么脚本语言往往会更难理解。这(在我看来)有两个主要原因,短期内不会消失:
这些问题可以通过使用非常有经验的开发人员来缓解,但如果将来唯一有用的开发人员是经验丰富的开发人员,我们将不需要雇用经验不足的开发人员,这将在以后给您带来麻烦。 / p>
由于这些原因,我认为下一代服务器端语言是静态类型的。从静态类型语言来看,我认为C#和Java具有最好的机会,因为有大量可用的库和这些语言的可读性。
答案 6 :(得分:1)
正如其他人所提到的,语言倾向于适应新技术和趋势。因此,为了回答这个问题,首先要看看计算机的整体未来,看看哪种语言最适合这些目的。
例如,以您的语言进展为例,在开头(:-)),需要一种能够最大限度地利用可用有限资源的语言,C符合这方面的要求。随着时间的推移,软件应用程序的范围越来越大,对基于面向对象的语言的需求越来越大,以便于软件重用,更容易设计等,并且C ++ / Java变得流行起来。
目前,业界对服务器端组件的漂移越来越大,这些组件使用瘦客户端UI(即浏览器)完成所有工作。因此,满足这种需求的语言更受欢迎(Ruby,ASP / Java EE语言)。
当他们最接近的技术变得流行时,新语言将变得流行。 就个人而言(这是猜测),我认为真正利用多核系统的语言有很大的空间。这意味着从一开始就构建了多线程,并且可能需要改变方法和思路(例如从程序到OO)。
答案 7 :(得分:1)
现在已经有几年的历史了,但Tim Sweeney的The Next Mainstream Programming Language: A Game Developer's Perspective对这个问题很有意思。
答案 8 :(得分:1)
编程的未来是什么?远离我们所知道的语言。
这是2009年,我们还在使用文字编辑器吗?通过该项目,我可以通过设置属性来构建整个应用程序。在(主要是数学的)表达式和字符串值之外,任何地方都没有一行文本。
其中一位开发人员抱怨“你不能打印出代码”,我回答说,“公司会打印出整个会计结构吗?或者会打印出它想要看到的方面,例如Cashflow声明和资产负债表?“只有当我们进入新的抽象机制时,我们才能真正前进。
编程的未来还有待观察,但我认为有一些令人兴奋的发展,最终会让我们摆脱我们已经使用了很长时间的C / C ++ / Java工具。
答案 9 :(得分:0)
从短期来看,我希望高级语言能够变得更强大,更有用。 Perl 6和Javascript 2.0是等待我们的好例子。
从长远来看,功能语言可能会成为主流,但我预计这种情况不会很快发生。
答案 10 :(得分:0)
在某些时候,程序将开始编写自己的程序,就编程而言,人类是多余的。主要的分歧是何时会发生这种情况。
答案 11 :(得分:0)
如果你只遵循编程语言历史的这一分支,我认为可以编写JavaScript和C#,因为它们是在你提到的三个之后,分享类似的语法,并从前辈那里获得。
其他人可能会提到D或Objective-C(他们当然已经在这里)。
用下一种语言,我想你的意思是“下一次成功”,因为每个月几乎都有一种新语言...
我认为它将是一种垃圾收集语言,使用Jit在字节码上运行,非常便携
我不知道它是面向对象的还是功能性的,使用静态或动态类型,但我会打赌混合,就像有趣的Fan Programming Language一样。
或许我们都错了,它可能只是一种自然语言,带有语音或图形界面:“在此页面的天气框中,将其颜色和此徽标更改为,并集成到我的页面中”。
答案 12 :(得分:0)
在我看来,最好的是像C ++这样的语言,它具有更紧凑的定义,更好的标准库,本机垃圾收集和本机同步结构。它应该可供相关新手使用,但仍然为专家提供设施,以便在需要时以高效,低级的方式进行编程。我相信D符合大多数这些标准,但我似乎不太可能接受它。
答案 13 :(得分:0)
D语言,特别是2.0版本已经从Ruby,Python和许多现代语言中学习,而没有保持与C的源兼容性,仍然允许对金属的原始访问。这种语言的设计决策是下一代系统和通用编程语言的完美解决方案,甚至内置了函数式编程和元编程。
答案 14 :(得分:0)
语言问题在我看来也没有。它总是取决于您的应用程序。而且由于语言主要是一组标准的库,非常适合这个或那个应用程序。语言与特定的应用领域有某种联系。
例如:
C -> Device drivers
C++ -> Highperformance Computing
Java -> Server side programs (J2EE)
C# -> Server, Client(Silverlight, WinForm, WPF)
Ruby, Python, ... -> WebScripting (Serverside) and helper scripts
ECMAScript (Javascript) -> WebScripting (Clientside)
我认为这些语言中的任何一种都能够解决任何计算程序(因为我们有Jits也是性能方面的)但是它们并没有在任何领域中使用,因为不可能为每种语言重新创建每个库。
在使C和C ++与众不同的事情上,有一个标准库,但与其他库相比,它是一个相当简约的标准库。要有效地使用这些语言,需要第三方(非标准)库。
因此,在为项目选择语言时,您需要查找以下内容:
最后一件事也是你喜欢的语言?最后,这是使用这种或那种语言的最大动力。
因此语言演变的下一步将是更高级别的库和概念更快,更具表现力。例子是