hello world!

    本文是根据个人经验,用最浅显的语言来阐述作为一名程序员对”语言“的些许理解。
文章目录:
  • 语言的定义
  • 人类语言和计算机语言
  • 计算机语言的分类与发展
  • 如何选择适合自己的计算机语言
一、语言的定义
最普遍意义上的语言是生物世界的连接点,只是人类限定了语言的范围。语言最简单的定义是“信息交流的媒介”。这一定义使得语言的概念涵盖社会活动的方方面面。世界上一共有多少种人类语言?专家们的估计是4000-8000。德国出版的《语言学及语言交际工具问题手册》提供了比较具体的数字:5561种。如此简单的问题深刻反映出德国人做事的严谨性。尤其对于我们程序员来说,将严谨和准确列为工作生活的第一原则是很有必要的。

二、人类语言和计算机语言
人类语言和计算机语言是两种不同的语言形式。前者是肢体语言形式和文字形式的组合,而后者是二进制形式。
人类语言是为了表达思想、交流感情、传递信息而存在的。是一种非常复杂、多样化、灵活性高的自然语言。具有很强的语义和语用功能,通过语言可以传递各种感情、信息、文化等内容。
计算机语言是用于人与计算机通讯的语言,是人与计算机之间传递信息的媒介。它由一些列的数字、字符和语法规则组合而成,具有高度的精确性和一致性。要成为一名专业的程序员必须掌握计算机语言是基础

三、计算机语言的分类与发展
计算机语言种类繁多,根据功能和实现方式的不同,可将其分成三大类:机器语言、汇编语言和高级语言。
1940年前-机器语言是第一代计算机语言,属于低级语言。通常是指一台计算机拥有的全部指令集合。计算机每执行一个动作、步骤,最终都是由机器语言指令来实现。这些指令能直接被计算机识别,无需经过翻译,是一组有意义的二进制代码,包含操作码和操作数两部分。由于机器语言是直接操作计算机硬件的,不同厂商生产的计算机,其指令的数量与功能、指令格式、寻址方式、数据格式都有差别。要使用这些0、1组合的指令来开发程序其学习难度太高,不适合成为现代程序员的首选语言。
1940年后-汇编语言也称为第二代计算机语言,同样属于低级语言。依靠机器语言来编写程序的难度太大,此后经历了各位牛人的贡献而诞生了汇编语言。这种语言大量使用了助记符来代替二进制指令,再用”汇编器“把汇编语言转换成机器语言。将开发者从繁琐晦涩难懂的二进制指令中解脱出来,一定程度上弱化了机器语言的使用难度。直到现在,汇编语言在编程语言领域仍然占有一席之地。其主要用于编写低级、硬件相关的程序。如:嵌入式系统开发、操作系统、驱动开发和逆向工程领域。
1950年-高级语言,第三代计算机语言,一种被高度封装的计算机语言,不能被计算机直接识别,必须经过转换才能被执行。也是当今程序员学习的主流语言。它以人类语言为基础,使用易于人类接受的文字表示、可读性高,使得程序员编写程序更容易。主要代表有Fortran、LISP、COBOL。时至今日,我们所熟悉的c、c++、pascal、Java也都是在此基础上派生出来的。2000年后各个应用领域诞生了越来越多的高性能语言,如:go,rust,scala等等。随着计算机技术的不断进步,计算机语言也在不断更新和演化,未来计算机语言的发展特点趋势是更安全、人性化(可读性、可写性)、跨平台这三个方向进行发展。

由以上可知,高级语言无法被计算机直接识别,必须经过转换才能被执行。按照转换方式的不同,高级语言可分为解释型编译型
1、解释型是使用解释器,一行一行代码解释执行。它不会生成可执行程序,每次执行都需要重新解释。代表语言有:JavaScript、Python、PHP、Shell、java等。(注:java有点特殊,它需要先编译后解释执行。)优点是可跨平台,缺点是执行效率慢。
2、编译型在被执行之前,需通过编译器,将源代码编译成一个可执行程序。一次编译后即可重复执行。代表语言有:C、C++、Golang等。优点是执行效率高,缺点是受平台限制。

四、如何选择适合自己的计算机语言
对于这个问题,我认为用抉择更严谨一点。毕竟你是在决定自己将来的工作方向。如果是?那请关注一下几个方面:
1、你要做什么:计算机领域细分了很多专业性的工作岗位:系统、软件、硬件、测试、网络、数据/算法、安全、运维,以上这些岗位都是需要掌握一种或多种计算机语言才能胜任。其次考虑个人兴趣和目标。如果对数据分析、机器学习感兴趣。Python是首选语言。如果对移动端感兴趣,可以选择与android和IOS相关的语言。如果是对游戏开发感兴趣首选c++或c#。
2、语言的难易程度:高级语言基本接近人类语言。我认为现在学习高级语言没有多大难度,只是在学习语言的同时还需要掌握一些计算机系统结构知识,这样更容易快速理解某些语言的特性。如果你想增加点难度不妨学习下汇编。
3、语言的扩展性:无论是在x、y方向上的扩展是否更容易。
4、跨平台:是否支持在多个操作系统上运行如:windows/linux/ios。
5、性能:在一定规模用户和数据的情况下,执行效率情况?
6、社区支持:社区活跃度和支持情况。在你遇到困难时需要帮助时,社区是否可以提供支持和解答。
综上所述,如果确定了以上6个方面的核心,至于如何抉择就不是个问题了。个人的语言学习路线是:
c,c++,java,sql,JavaScript,html,css. 框架学习:spring,springmvc,mybatis,hibernate。数据库学习:mysql,redis.





发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注