概述:某些Ruby、Python和Javascript的新手程序员常常抱怨这些语言太低端,感觉他们没有学习到那些真正“高端”的编程语言。本文将详细讨论“高端”的编程语言是否真的高端?
我看到了许多刚接触Ruby、Python和Javascript的新手程序员抱怨这些语言太低端,就好像是在以某种方式欺骗系统一样。他们认为他们没有学习到那些真正“高端”的编程语言。某些语言是否真比另外一些语言更高端?我们一起来研究一下。
从电频层面上看
众多的编程语言在方方面面都有所不同。
但从低级的机器语言到我们大多数人使用的高级语言,都离不开电频这项技术。低使用性的机器语言并没有表现得比那些高级代码更高端或者先进。低使用性是众多语言设计者在完成特定设计目标的长期选择结果。
让我们继续深入,这里有一个用机器语言编程的例子:
这段代码一旦被数字处理器解析为电子信号后就能直接操作数字传感器和电动机了。在#之后的那些人可读懂的东西会被电脑忽略——它们之所以被程序员放在这里是为了让其他人读到这段代码后能知道其究竟在干什么。感谢上帝,我们不用必须像这样来编写代码。
程序要控制电脑的话最后都会转变成机器语言的。但是我们创造了编程语言用来取代那些直接用二进制、十六进制或者十进制代码来编写的机器语言(如早期的计算机科学家像阿兰·图灵和他朋友所做的那样),它帮助我们以更快更容易的方式将自己的想法转化成机器指令。有许许多多种方式都可以生成你在上面所看到的那段机器语言,因此就会有许许多多种编程语言,但是它们全部都会在某处转化为电频频谱。
从这个角度来看,语言的选择其实就是对让电脑帮助你生成机器语言的方式的选择。那么,高端和不高端,区分的依据何在?
从设计角度上看
今天所有的程序语言都是人们为了完成某种用途而设计出来的。这种理解是至关重要的,因为它们的设计目标决定了当程序通过它们运行时用户将得到的体验。
让我们通过设计目标来对比两种编程语言C和Ruby。
- C的目标:接近于机器语言,但能够移植在许多机器架构上。
- Ruby的目标:美丽、简单以及令开发充满快乐。
虽然最终都会生成机器语言,但不同的设计目标使这些语言的使用体验彻底不同。由于C语言结构更接近于机器的实际工作,因此它的机器代码在计算机执行时会更加高效、快速。这里有一个记录了各种可视化程序语言在处理某个简单文本的速度的图表,随着文本尺寸大小的变化,程序语言在处理速度上发生了变化:(纵轴为处理花费的时间,横轴为文本的大小)
由于执行时间很容易衡量(人们喜欢优化他们能够衡量的东西),象C一样“快速”的语言在人们精神层面上就会认为是高端的编程语言。
这其实是虚假的,这与不精确的速度测量密切相关。
速度的测量
C和那些底层语言在计算机硬件迟缓以及系统资源受限的时代是不可或缺的。毁灭战士、雷神之锤以及其它的第一代3D游戏的出现才突破了只能使用注重机器运行速度的语言的限制。
然而在今天,相对于我们在计算机上需要的大部分东西,计算能力是廉价和充足的。在软件开发中真正受限的是开发人员的时间和精力。象Ruby那样的语言可以让程序员用更少的代码做更多的事情,使开发更加快速。增加开发速度意味着可以更快的找出你所做的是否是真正的需求,可以更加简单的添加用户要求的功能以及可以使用更少的开发人员更轻松的完成项目。
下图是多种常见语言的代码复杂度排列:(黑色短横线为平均复杂度,红色字为最热门的一些语言,黑色字为较冷门的一些语言)
这张图可以让我们清楚知道哪些语言学起来更简单,帮助初学者找到易于开始的位置,另外这也可以解释为什么有些人认为某些语言很低端。到这里,你认为哪种方法更“高端”呢?
多元化
这是一个错误的命题,因为问题的答案取决于你的需要。科学家、统计学家和数据分析师仍然需要一门象C语言那样注重机器运行速度的语言来帮助处理他们的工作。大多数网络开发者需要象Ruby或者Python那样注重开发速度的语言来快速满足他们的业务和客户目标。在每个情景中,“最好”的语言都是不同的。
需求的多样性支撑了一个在不同设计目标下,程序语言多元化的重要性的强力论证。程序设计中永远不会有一门人人都采用的世界语,甚至是机器语言也非潜在的通用语言,因为每台电脑的架构都采用了略有不同的机器语言。对于对软件有不同需求的我们来说,这是一件好事。
独立的认识
在新手程序员阅读到这篇文章的时候:我希望它可以帮助你对所学习和所书写的语言代码有自己独立的认识。对于C语言,你需要知道它更贴近于机器语言而不需要了解它是看起来更“高端”的语言。我们创造编程语言的目的是为了减轻自己的负担,能够更加快速方便的创造想要的东西。
如果你要选择学习C语言,你选择的目的应该是它擅长对Arduino和嵌入式单片机编程或者是它能够快速编译机器算法,而不是你认为它比你已经学过的语言更加“高端”。 让你想从事的项目来决定你要选择学习的语言。因为毕竟它们都只是机器语言中的其中一种方言。
合适的选择
我所认识的最高端的那些程序员从从事编程工作开始就爱做一些很浅显的事(他们中的很多人如今仍然保持这种习惯)。他们会自己做一些很简单的游戏,或者做一些搜索和可视化的实验。他们所做的每件事情都来自于他们对此的兴趣,编码对他们来说就像是在玩耍一般,这非常的有趣。
不断重复对相关问题的反馈是掌握任何技能的关键。无论你选择的语言或项目是什么,请确保花费大量时间来学习它并听从指导者的建议反馈。代码语言产生的真正目的是为了帮助别人建立或者完善那些很棒的东西。无论什么语言,你的选择应永远是能够为你提供最快捷、最有效帮助的那一种。
相关推荐
ST(Structured Text)语言是IEC 61131-3标准定义的五种编程语言之一,适用于三菱Q系列PLC,是一种结构化、接近高级编程语言的编程方式,提供了更为灵活和强大的编程能力。 本教程《三菱Q系列PLC ST语言及Q系列PLC...
结构化文本(Structured Text, ST)是IEC 61131-3标准定义的五种编程语言之一,适用于高级逻辑和数学运算,尤其适合编写复杂的控制程序。本资料合集主要关注的就是如何使用ST语言来对三菱PLC进行编程。 《三菱Q-L...
### 单片机的编程语言和开发环境 #### 一、单片机的基本概念与工作原理 单片机,即微控制器(Microcontroller Unit, MCU),是一种集成在一块芯片上的微型计算机系统,它包含了中央处理器(CPU)、随机存取存储器...
CG语言,如OpenGL shading language (GLSL) 和HLSL(High-Level Shader Language),是为GPU设计的编程语言,用于编写着色器,这些着色器控制着如何在屏幕上呈现物体。着色器程序可以在顶点、片段等阶段运行,实现...
第2~5章详细介绍了JavaScript语言本身,揭示了一些JavaScript不为认知的语言特点。 第6~9章介绍了JavaScript和浏览器进行交互的一些基础知识和一些进阶知识,如DOM的基础、正则表达式。 第10~13章介绍了一些更加...
UNIX操作系统自诞生以来,凭借其开放性和强大的标准程序集,在高端应用市场中占据了重要地位。特别是Linux的出现,进一步推动了UNIX操作系统向桌面系统的发展。UNIX系统中,Shell作为一种标准程序,不仅提供了一个...
《SAP ABAP开发详解与高端应用》这本书深入探讨了SAP ABAP(Advanced Business Application Programming)编程语言,这是SAP系统中用于开发业务应用程序的关键技术。ABAP是SAP平台上的核心编程语言,用于创建自定义...
CG语言与其他编程语言相比,更专注于图形处理,语法简洁,但同时也需要对图形管道有深入理解。学习CG语言,开发者需要掌握如何设置顶点、纹理坐标,如何定义和应用材质属性,以及如何控制光照和阴影。此外,还需要...
- **API接口**:提供VISA、GPIB、USB和以太网等接口的编程指南,支持多种编程语言如Python、VB.NET、C++等。 - **函数库**:详细列出各种控制和测量函数,解释其参数和返回值。 - **示例代码**:提供实际应用示例...
- **编程语言**:手册中提到了编程使用的语言,通常情况下,欧姆龙NX/NJ系列支持多种编程语言,包括但不限于梯形图(LD)、功能块图(FBD)、顺序功能图(SFC)和结构化文本(ST)等。 - **软件/插件**:编程环境通常包含一...
4. **汇编语言基础**:DOS编程常常涉及到汇编语言,因为它是与DOS最接近的语言。理解基本的汇编指令,如MOV、ADD、JMP等,以及如何使用汇编与C/C++混合编程,是DOS编程的重要技能。 5. **批处理文件**:DOS中的...
《川崎机器人编程手册》正是这样一份重要的技术文档,它不仅涵盖了基础的接线知识,还深入到编程语言的精髓,为用户提供了完整的学习与操作指南。 首先,川崎机器人接线手册作为该系列手册的入门级指导,为用户提供...
Java编程语言是面向通用目的、并发、基于类、面向对象的计算机编程语言,设计时力求减少实现依赖。它的目标是让应用程序开发者实现“一次编写,到处运行”(Write Once, Run Anywhere,简称WORA),这意味着在一种...
软件提供了图形化的编程环境,用户可以通过拖拽指令块来构建程序,支持IL(指令列表)、ST(结构文本)、FBD(功能块图)和LD(梯形图)等多种编程语言。 在硬件组态部分,你需要了解M580 PLC的模块配置,包括I/O...
CQM1H系列PLC主要采用梯形图(Ladder Diagram, LD)和指令表(Instruction List, IL)编程方式,同时支持结构文本(Structured Text, ST)和功能块图(Function Block Diagram, FBD)等高级编程语言,符合IEC 61131-...
这些软件提供了友好的图形化界面,支持梯形图、结构文本、功能块图等多种编程语言,使得编程过程更为直观和便捷。 四、编程语言 1. 梯形图(Ladder Diagram, LD):是最常见的编程方式,类似于电气控制线路,易于...
【高端大气网站模板源码下载】这一资源是针对企业网站建设的专业设计素材,主要适用于那些希望构建具有现代化、专业感和高质感网站的企业或个人开发者。网站模板是预先设计好的网页结构,包含了完整的HTML代码、CSS...
4. **编程基础知识**:840D sl/828D支持多种编程语言,如PLC的LAD/FBD/SCL和NC的G代码。这部分会介绍编程语言的基本语法、指令集以及编程逻辑,帮助用户掌握编程技巧。 5. **功能块(FB)与组织块(OB)**:在PLC...
AM400系列可编程控制器支持IEC 61131-3编程语言,包括LD、FBD、IL、ST、SFC和CFC等多种编程方式。用户可以根据具体需求选择合适的编程语言。 二、输入规格 AM400系列可编程控制器的输入规格包括高速输入、差分输入...