余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

掌握所有的编程不是语言,关键是语法的认知

xiyangw 2022-11-26 16:38 22 浏览 0 评论

你是初学者,不知道选择哪门语言入门。

你是高级程序员或团队负责人,但你对新兴语言感到困惑,不知道该投资哪门语言。

你的团队针对使用哪门语言争论不休,甚至发生了一些不必要的冲突。

你选用了一些时尚的编程语言,但是两个月后发现它们都很坑。

就我个人而言,如果遇到没见过的语言,我会直接使用,而不会花很长时间学习。阅读本文后,也许你会明白为什么我可以做到这一点。通过了解语言的特征,每个程序员都可以像我一样实现这个目标。至少我希望如此。

关注语言的特征,而非语言本身

许多开发人员很在意他们或别人是否可以熟练使用某种语言,他们常常会对不同语言的优点和缺点争论不休。然而,对于我来说这些问题都不存在。尽管我撰写了很多批评语言的文章,但我很少在实际工作中争论语言本身。我发现最根本的原因是相对于语言本身,我更加重视语言的特征。我可以用任何语言甚至很糟糕的语言写出优秀的代码。

任何语言都是各种语言特征的集合。例如,编程语言就像一台计算机。其品牌可能是IBM、戴尔或苹果。但是,你能说苹果的电脑就一定比IBM好吗?不能。首先你必须了解计算机的配置,例如处理器型号、内核数量、CPU的时钟频率、一级缓存、二级缓存……,内存和硬盘,显示分辨率,还有显卡、网卡等等。有时你还需了解每个硬件的兼容性。

对于编程语言来说,这些计算机的配置则等同于语言特征。以下是语言特征的一些例子:

变量定义

数学运算

for循环语句,while循环语句

函数定义,函数调用

递归

静态类型系统

类型推断

Lambda表达式

面向对象

垃圾收集

指针运算

Goto语句

语言特征与计算机配置类似。在选择计算机的时候,没人会说戴尔的计算机就一定是较好的,他们会说这台计算机的CPU是Intel i7处理器,比i5好,DDR3的内存比DDR2快很多,SSD硬盘的读写速度比普通硬盘快很多,ATI的显卡性能很差,等等。

编程语言也是如此。每种语言都有一组通用的特征,例如变量、函数、条件语句和循环语句。只要你学习一种编程语言,并掌握基本概念,就可以将这些知识应用到其他语言中。因此,我们可以掌握语言的特征,而不用浪费时间来选择语言。

当一个聪明的程序员开始接触一种新的编程语言时,他们通常不会花费很多时间阅读语言的手册或书籍,而是选择直接使用该语言来解决实际问题。例如,我用R语言执行一些复杂计算时遇到了一个问题。首先我会花几分钟浏览R语言手册,了解该语言的特征。然后我会从网上找到与该问题相关的R语言的程序,并对其进行修改,直到解决问题。在解决问题的过程中,你可以很快掌握该语言。

选择一门合适的入门语言

作为初学者,你应该选择一门没有明显缺陷的合适的编程语言。首先你应该掌握这门语言的特征,然后将这些语言特征应用到其他编程语言上。哪种语言作为入门最合适呢?我个人认为可以从下列语言着手:

Scheme

C

Java

Python

JavaScript

相反,我不推荐用下列语言作为入门:

Shell

PowerShell

AWK

Perl

PHP

Basic

Go

一般来说,不应该使用脚本语言作为入门语言,尤其是那些源自早期的Unix系统的语言。虽然与Unix shell相比,PowerShell有所改进,但它依然没有摆脱脚本语言的根本问题——他们的设计者不知道自己在干什么。

初学者利用脚本语言学习编程时无法掌握到关键点,这是一个非常严重的问题。脚本语言经常会将一些系统工具的知识(例如正则表达式、互联网等)添加到语法中,这不仅浪费了初学者的很多时间,而且导致他们无法真正掌握编程最关键的概念:变量、函数、递归、类型等等。

掌握关键特征,忽略次要特征

初学者应该关注编程语言最关键的特征,而不要为次要内容分神。我发现在许多编程课的开头,经常有学生在学习用“printf”函数输出“Hello World!”时,老师要求他们记住“printf”函数的诸多复杂的输出格式,例如%d、%F、 %. 2f等等。

然而,众所周知,输入和输出操作根本不是语言的主要部分。与核心的特征相比,这都是次要的。一些初学者在学习了几周的Java后,仍然对“printf”功能感到恼火。虽然他们写了几百行“printf”函数,但仍然不明白变量和函数是什么,甚至不知道如何使用算数语句和循环语句!

许多初学者认为编程很难学的较大的一个原因是,他们以为记不住%d、%F、 %. 2f就不可能深入学习!

自己动手实现语言的特征

在学习了基本的语言特征并使用它们编写代码之后,下一步就是实现这些特征。只有你动手实现不同的语言特征,才能算是完全掌握了它们。

一位编程大师曾经说过,理解一门编程语言的较佳方式是自己动手实现它,这意味着你需要编写一个解释器来实现它的语义。但是我认为可以对这句话做略微的改动:完全掌握语言的一个特征的较佳方式是自己动手实现它。你不需要实现整个语言,因为归根结底我们要使用是语言的特征。只要你自己动手实现了语言的一个特征,那么你就可以掌握所有语言中这个特征的实现与使用。

例如,在学习SICP时,很多人可能会选择使用Scheme来实现一个面向对象系统。面向对象系统的Scheme的语法与其他语言(如Java、C ++、Python等)有很大的不同。但是,它可以帮助你理解所有面向对象(OOP)语言中面向对象的概念。它甚至可以帮助你理解各种面向对象实现方法之间的差异。

直接学习面向对象编程语言无法掌握这一点,因为在你学习Java、C ++、Python等语言时,你只是一个用户,在使用Scheme亲自动手实现面向对象系统之后,你就成为了创造者。

总结

无论是初学者还是高级程序员,你都应该更加关注语言的特征,而不是使用哪种语言。只有这样,你才能快速掌握新语言并编写高质量的代码。

感觉有用的朋友,点个关注,给个收藏,就是对我坚持更新,最好的支持

相关推荐

(1-2我们的第一段PHP代码)php基础php学习基础实例代码操作教程
(1-2我们的第一段PHP代码)php基础php学习基础实例代码操作教程

我们的第一段PHP代码这句代码非常神奇,一句话能变成一个网页。是我们PHP入门的第一段代码。现在你可以在网页服务器的根目录当中新建一个文件。文件的名字为:abc...

2023-03-21 18:16 xiyangw

初学JS必会的10种JavaScript代码优雅写法(炒股入门初学者基础知识)
初学JS必会的10种JavaScript代码优雅写法(炒股入门初学者基础知识)

当我们刚开始学习JS代码时,我们只需要掌握JS中对应知识点就好,随着对JS代码的熟悉程度,我们就要思考如何写出更优雅,更简洁的代码。接下来我分享10种常用JS代...

2023-03-21 18:16 xiyangw

七小时带你入门HTML+CSS网页设计,编写网页代码的思路(三)

上一篇文章中我分享了一段图文标签,这篇文章主要给大家详细解释一下这些代码的作用和意义,以及编写网页代码的格式与思路。下面我贴上html代码:<!--HTML--><div>...

C语言编程基础知识汇总学习,适合初学者!更新常量知识
C语言编程基础知识汇总学习,适合初学者!更新常量知识

(二)整型常量整型常量有3种形式:十进制整型常量、八进制整型常量和十六进制整型常量。(注意:c语言中没有直接表示二进制的整型常量,在c语言源程序中不会出现二进制...

2023-03-21 18:15 xiyangw

带你快速入门数控编程(数控编程入门教学)
带你快速入门数控编程(数控编程入门教学)

1、机床坐标系和运动方向的承认机床的直线运动X、Y、Z三个坐标系选用右手笛卡儿直角坐标系,如图11-6所示。坐标轴定义次第是先承认Z轴,再承认X轴,最终承认Y轴...

2023-03-21 18:15 xiyangw

Html5入门详细教程第一课,代码结构跟紧我免费教你建站
Html5入门详细教程第一课,代码结构跟紧我免费教你建站

大家好,通俗易懂讲营销,我是江湖哥,今天为大家分享我今天录制一个Html5入门教程第一个课的视频准备的课件,大家想学建站,想拥有自己一个简单的博客请关注我,如果...

2023-03-21 18:14 xiyangw

Python语言入门(3)-程序代码里的记忆体:变量
Python语言入门(3)-程序代码里的记忆体:变量

python上篇《Python语言入门(2)-三种核心语句》讲了python语言里的:1,赋值语句;2,循环语句;3,选择语句,介绍怎样运用这三种语句和计算机...

2023-03-21 18:14 xiyangw

零基础如何自学编程「2」(从零开始自学编程)
零基础如何自学编程「2」(从零开始自学编程)

在《零基础如何自学编程「1」》里说了一下零基础的同学要学编程的话究竟眼怎么正确开始。下面从三个方面说一下:1.选一门编程语言。2.学好数据结构和算法。3.选择一...

2023-03-21 18:13 xiyangw

没见过的 Java 编程入门教程!例程使用中文标识符代码:问个好吧
没见过的 Java 编程入门教程!例程使用中文标识符代码:问个好吧

前言Java教程用中文写(如下)更能被新手理解学习。可惜至今没有看到类似入门教程,在此敢为人先。注意:本教程的所有Java代码都可以正确运行,因为Jav...

2023-03-21 18:13 xiyangw

教你简单入门编程(入门编程教程)

首先,别光想,干就好了;然后就下一步下一步了,就o了。什么不信,那先试试吧...

初学Java如何写好代码(java写代码的思路)
初学Java如何写好代码(java写代码的思路)

初学Java的同学时常会遇到这样的情况,跟着入门教程看过一遍,但需要自己写代码的时候却无从下手;写代码的时候时常会遇到不懂的地方,如果停下来去详细了解,可能会花...

2023-03-21 18:12 xiyangw

「好课堂在线」用python和pygame游戏编程入门-控制角色移动

在上一节中我们知道了事件,以及如何捕捉键盘事件进行响应,本届我们结合第一节和上一节的内容,做一个用键盘控制角色移动的功能,代码如下:#用python和pygame游戏编程入门-控制角色移动##...

自学编程怎么入门?很多新人的做法都错了(自学编程怎样入门)
自学编程怎么入门?很多新人的做法都错了(自学编程怎样入门)

自从在网上和大家常常聊聊关于自学编程的话题后遇到很多0基础或者初学编程的朋友,大家给我的感觉是摸不着头脑,很多很简单的问题会走弯路,弄不明白。总结一下,主要以下...

2023-03-21 18:11 xiyangw

单片机入门-Proteus绘制电路和Keil写代码视频教学

视频教程如下:视频加载中...1打开ISIS,点击P2输入AT89C51,选取放入电路图3再点击P,输入led-yellow,res,分别添加LED和电阻,电阻阻值设为100欧,放在电路图,并连线,...

一张图学会编写我的第一行Java代码(如何编写第一个java程序)
一张图学会编写我的第一行Java代码(如何编写第一个java程序)

我的第一行Java代码Eclipse下编写编写我的第一行Java代码你也可以[笑]...

2023-03-21 18:09 xiyangw

取消回复欢迎 发表评论: