我是一名自学者,自学如何使用不同语言编程和编写脚本(新手:Java,C ++,Javascript / Node.js,HTML / CSS),设计项目和原理图,添加电子设备和外围设备。
我在研究过程中看到的很多是使用多种语言来实现一系列目标(例如在Javascript / Node中构建Web服务器来处理HTTP请求和响应,使用HTML编写的Web页面进行响应并使用CSS定制/风格化并嵌入了Javascript习惯;或者代替Node,您可以用PHP或Python编写它。
我很难理解为什么使用多种语言而不只是一种语言(某些高级语言能够执行大部分(如果不是全部)所需任务)和HOW信息在不同语言之间传递。一个程序可以调用另一个程序(我知道一个HTML文件可以调用"调用"到CSS和Javascript文件,所以,我理解那个实例)?
我认为我之所以挂在这上面,是因为我缺乏经验,缺乏其他常用语言的知识。这是否意味着某些语言只是以特定方式处理特定任务?
我觉得某些语言,例如Java和C ++,可以用各种方式和各种实例来处理各种不同的任务。其他一些(例如PHP和Python)不是这样吗?
我正在深入了解这个世界所提供的一些最聪明的头脑的知识和集体经验,但请记住,我是新手,我没有做的好处这在课堂上,但我已阅读并拥有许多关于特定语言等编程的书籍。请以我和其他人可以理解的方式回答。
感谢您的时间,我期待着您的回复。
干杯。
梦幻般的答案!
但是,我很好奇;在努力寻找特定问题的解决方案时,程序员何时知道何时停止使用一种语言并继续使用另一种语言?我感到困惑的地方。是否通常取决于软件开发人员以及他/她自己的特定和艺术偏好如何完成某些事情或某些事情在不使用多种语言的情况下是不可能的?
我确实理解脚本编写,当它使用而不是程序或应用程序时,我知道运行时执行/编译代码,环境和框架以及虚拟机,但这些都没有明确规定定义的边界或限制任何特定语言的功能/能力。为什么在Python中调用C ++函数? Python能否首先完成所需的工作,并且可以选择更合适的语言,从而减少了为解决方案增加另一层复杂性的需求?我可能正在思考它,但知道这将指导我学习并帮助我作为程序员绘制出更好的解决方案。
答案 0 :(得分:1)
编程就是为问题创建解决方案。人们的想法不同。人们从不同的角度看世界。人们喜欢调整解决方案并使用工具。语言是由人创造的,以便解决不同的问题,在某些情况下只是为了游戏。我的回答更像是为什么只有一种语言?'。
答案 1 :(得分:1)
基本上,不同的技术(浏览器,操作系统等)及其编程语言随着时间的推移而发展,因此在实践中使用了许多不同的语言。出于同样的原因,有多种真实语言。您可以设计一个支持Python而不是JavaScript的Web浏览器用于前端编程,但这将涉及设计脚本用于访问页面的API(DOM HTML模型),它需要得到所有主要Web浏览器的支持,标准化,Web开发人员需要使用它。
是的,在许多情况下,用一种语言编写的程序可以调用用其他语言编写的程序。根据上下文,需要有某种接口连接这两个部分。例如:
C和C ++都是编译语言。也就是说,它们被翻译成机器代码以由处理器执行。机器代码中一个函数的代码所在的位置与它一起存储。操作系统的链接器负责链接两个模块(.c
文件),使得在一个模块中进行的函数调用朝向另一个模块中定义的函数调用正在加载的正确机器代码。对于调用C程序的C ++程序,一个问题(许多其他问题)是函数的命名方式不同(名称修改)。实际上,C程序中的函数需要在C ++源代码中声明extern "C"
,以便链接器正确设置它。
浏览器会解释和执行JavaScript,CSS和HTML(对于JavaScript),但不一定会转换为机器代码。 (JavaScript引擎可能会使用即时编译)。因此,浏览器为JavaScript代码提供了访问CSS定义的可能性。 .style.color = ...
。
对于Perl,PHP,Python等脚本语言相互调用,存在处理必要中间步骤的不同库("粘合代码")。有许多可能性,例如PHP代码可以调用Python解释器来执行Python程序,或者它可以通过操作系统的机制等将数据传递给正在运行的Python程序。
SWIG等包装器允许从脚本语言调用C / C ++代码。它们将必要的符号(函数)添加到Python内部调用的代码中。比C ++程序编译为Python扩展,由Python解释器加载,本身是编译程序,并使用操作系统的链接器。然后,Python解释器以这样一种方式解释Python代码,即调用给定的Python函数会导致执行扩展程序包装函数的机器代码。
有许多方法可以将编程语言分类。例如,从低级别(机器代码)到更高级别(更多抽象,转换为自动处理的机器代码):