0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

学习编程语言是在学什么

C语言编程学习基地 来源:博客园 作者:锅叔 2022-04-28 11:18 次阅读

“想入门编程,应该学那种语言?” 这类问题在五湖四海,世界各地,应当都是比较常见的。给出的回答呢。

有的会直接告诉你去学Python

有的呢会给一些比喻,说编程语言就像画家手里的笔,有毛笔,钢笔……;

有的会给出一个技术栈的图表,告诉你如果你要做XXX,那就学XXX,如果做XXX就学XXXX;

感觉呢这些建议,也都不错,但是通常都比较简略,结果明确,但缘由一般不会展开太多解释。纯新手可能似懂非懂,将信将疑。

自上而下,由整体到具体的理解一个事物,效率往往比从具体到整体要高,更容易明白自己所处的位置, 更容易入门。

可惜,对于程序员在开发领域归纳总结,融汇贯通来说, 可能是十几,二十年后的事情了。所以在分析编程语言优劣,或者选一个语言写具体的Hello World之前, 我们最好对“编程语言”有一个更整体全面的了解。

一、学习编程语言是在学什么

百度百科——编程语言(programming language)可以简单的理解为一种计算机和人都能识别的语言。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。

维基百科——编程语言是一种规则, 这种规则,可以把文字, 或者图形元素(可视化编程语言)转化为机器码。编程语言是一种计算机语言,用于在计算机上实现各种算法

百度的定义显然说了啥但好像又啥都没说。-_-|| 。维基百科的则准确了很多。编程其实就是把你写的一段文字(代码)按照特定的规则,

转换成机器码(机器能够运行的指令),用于在计算机上实现算法(如显示2个输入数字中最大的)。你要学习的其实就是这种规则,比如当我需要在屏幕上显示

Hellow World时。按照不同语言的规则,我需要这样写出这样的文字。

c语言:printf(" hello world!");

php语言:echo"hello world!";

java语言:System.out.println("Hello World!");

看上去有些差别,但又有些相似。实际上目前主流的高级语言如Java ,C#,javascript,Python他们的基础语法规则是非常近似的。无论先学哪个入门,后面的切换成本,基本是几小时搞定。当你学会一门语言,除了学会了具体关键字,语法之外,更主要的是你会沉淀下来一种对编程语言模式的理解。当你理解了一种语言中的 变量,函数,控制结构(顺序,分支,循环),迁移其他语言时,你会发现在其他语言中,这些概念也是存在且完全适用的。

伪代码是一种脱离具体语言的,体现编程思维的描述方式, 相同层次的语言,编程思维是共通的。如显示2个输入数字中最大的问题的编程思路。

变量A等于输入的第一个数字

变量B等于收入的第二个数字

如果 变量A大于 变量B

屏幕显示变量A

否则

屏幕显示变量B

上面的算法思想, 在各种语言中都是可以实现的。仅仅变量定义的方式,判断分支的书写方式略有差别。所以,对于入门来说,学习一门编程语言,通常都狭义的指编程语言本身(基本不涉及第三方类库框架等), 你所学到的语法细节切换成本是很低的,各个语言差不太多,而真正沉淀的是你在编写过程中逐渐熟悉领会的,编程思路。即组合使用,变量,函数,控制结构(如果/那么/循环)等要素,解决具体的算法问题的能力。

二、IDE与编译原理

在纠结良久终于选定了学哪一门语言之后,可能开始接触到的第一个东西是IDE,例如学Python可能是用PyCharm,我之前学Basic用的是Visual Basic。IDE的含义是“集成开发环境”, 名字虽然很准确,但当时还是小白的我其实是非常困惑的,压根搞不清楚IDE与编程语言之间的关系。也搞不清楚,写完代码后在IDE中一点那个绿色的小三角(运行)过程中到底发生了什么。IDE可以方便程序的开发,但是对于新手会影响他对编程语言的理解认识,很难理解IDE的确实含义,“集成开发环境”到底集成了什么。

5832c6de-bef0-11ec-9e50-dac502259ad0.png

——上面是Python的 Hello World。IDE为PyCharm

IDE大概集成这样几种东西。

1.文本编辑器是一个用于编写文本的工具,像上图写print Hello World 的地方。编程其实就是在编写一段文字,保存成一个文件。常见的简单文本编辑器比如windows中的记事本,也是一个文本编辑器。理论上记事本完全可以用来编程,但IDE中的文本编辑器会提供很多额外功能,如文本着色,智能提示(敲pr会自动提示 print),这些快捷功能是语言相关的。当然也会提供文本编辑器的常见功能, 保存,查找,替换等。

2.编译器连接器 对于非脚本语言(最终生成独立的可执行程序)如C,编写好的程序文件是无法被运行的。例如在windows中,系统层次,典型的可执行文件扩展名为EXE,这是一种特定的文件格式PE文件格式。编译器与连接器的作用是,将编写好的程序文件最终转化为EXE文件。编译器针对不同的CPU将程序文件,编译为对应的CPU指令。链接器是平台相关的,将编译后的中间文件组装成约定格式,如 Windows ExE。

3.解释器对于脚本语言,解释器能够直接执行,文编编辑器编写完成的程序文件。如点击上图的运行。实际是运行了python ./a.py其中的 python 可以理解为解释器。

4.调试器为你提供了一个可视化的调试器,你可以直接点击按钮,进行调试操作,而不是在黑洞洞的命令行上敲命令。

5849f7e6-bef0-11ec-9e50-dac502259ad0.png

——gdb 调试界面

5.其他工具插件通常会具有集成其他插件的能力,如集成版本管理。可以直接把你的代码上传云端,进行版本控制。或者统计分析,写了多少代码,是否编写规范等。

通过以上对IDE 的介绍可以看出, 编程语言是一种规则,准确的说是一种规范。举例来说其中可能存在一条,

当你写了一行printf(hello),之后就在屏幕上显示hello。所以规则是稳定不变的。而你过程中要到的工具,IDE的各个组成部分都是可以替换的。只要编译器符合语言的标准规范即可,因此会有多种编译器存在,其性能特点可能会有一些差异。

三、广义的编程语言

想入行的同学经常会说,我想学Java 该怎么学, 我想学Python该怎么学。这其实通常来说不太准确。狭义来说,你只需要花几天,老手可能是几小时几十分钟,去看下这个语言的语法规则,如何定义变量,如何写判断,循环,如何调用方法。然后做一些算法问题练习,比如对10个数字排排序。写个猜数字的游戏,基本就算学会了。但这可能跟你的期望不一致,你说的学Java 可能是觉得你学会了Java 就可以写出一个像WOW那样的游戏 :-),或者像QQ那样的聊天工具,或者像淘宝那样的网站,而学会了语言之后你仍然会觉得无从下手,只会在命令行控制台中做点简单的输入输出。那么这中间的gap究竟在哪里呢?是因为:

5861d154-bef0-11ec-9e50-dac502259ad0.png

——图片来源于知乎回答“互联网”技术栈

就是说,要规范专业的做一个能支持一定访问量的互联网站点(如淘宝),会涉及上面大部分的技术内容。这远超“编程语言”定义的范围。其中很大一部分是语言无关的,例如运维,工具,中间件中的分支内容。其中后端中的语言分支之下是语言相关的,而前端中如果不考虑移动端Android Ios, 对于Web来说其实只有HTML,CSS,Javascript三种语言,angularjs以及VUE,属于属于Javasciprt语言中的不同框架,但差异较大。

综合以上涉及的语言类型主要分为以下几类

命令式

关注步骤细节, 如查询一堆数字中最大的一个, 需要写循环、判断、 定义变量进行比较,最终得到结果。计算机的算法过程完全由你定义。通常学习的Java javascrfipt PHP C都可以理解为这一类语言。

结构化查询——声明式

多用于结构化数据库查询(“数据库”是为了解决程序存储,查询数据问题,想象一个图书管理程序),SQL语言。取得最大数字如下, 你并不需要关心它的具体算法。

SELECTmax(num)FROMtable

标记语言

HTML,XML,CSS等属于标记语言,用于定义布局,没有逻辑。严格来说不属于编程语言。如HTML标记语言规定

表示一个表格 ,其中的表示表格的一行,编写人按照HTML的标准编写,浏览器按照HTML的标准处理渲染, 最终就会在屏幕上显示一个表格。

回到写一个淘宝上,淘宝需要有web页面,所以你要学习HTMLCSS,JS,需要有数据库存储商品, 所以需要学习数据库工具如MYSQL,并能够编程使用他,能够增删改查数据。需要有后台服务器,用于给页面提供动态内容, 动态的生成HTML,所以需要学习Web服务器如何编写,可以选择的语言有很多, 如果选择了一种如Java, 也不需要从头造轮子, 那就要接着学习Java 的Web框架,如Spring。如果你选择用PHP语言写Web服务器, 那就无法使用Java 的Spring框架了。对应的PHP也会有自己的Web框架。所以特定语言第三方框架的学习成本才是切换语言的最主要成本。

总结

如果你是想入门学一门语言,那具体学哪种其实真的不算是个重大抉择,主要是为了建立编程思想。

如果你是想进行特定领域的开发, 那你一定要首先搞清楚技术栈, 在该领域中使用的主流语言,工具。然后针对性的学习。如果你志向于开发游戏客户端,那学习互联网的技术栈,就是南辕北辙了。

先到这里, 希望对初入门的同学能有所帮助!

原文标题:想入门编程,应该学那种语言?

文章出处:【微信公众号:C语言编程学习基地】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IDE
    IDE
    +关注

    关注

    0

    文章

    326

    浏览量

    46338
  • 编程语言
    +关注

    关注

    9

    文章

    1878

    浏览量

    33147
  • python
    +关注

    关注

    51

    文章

    4677

    浏览量

    83473

原文标题:想入门编程,应该学那种语言?

文章出处:【微信号:cyuyanxuexi,微信公众号:C语言编程学习基地】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    plc编程语言与c语言的联系 c语言和PLC有什么区别

    PLC编程语言与C语言的联系 PLC(可编程逻辑控制器)是一种针对自动化控制系统的特殊计算机。PLC编程
    的头像 发表于 02-05 14:21 1074次阅读

    脚本语言编程语言的区别

    脚本语言编程语言是计算机语言的两个主要分类。尽管两者都是用于编写计算机程序的工具,但它们在设计和运行方式上存在一些显著的区别。下面将详细探讨脚本
    的头像 发表于 11-22 14:33 1401次阅读

    Python编程语言属于什么语言

    、易于学习和理解的语言,强调代码的可读性和简洁性。Python的设计真正做到了"坚守一种方法",非常注重代码的正确性和一致性。这也是为什么Python非常受欢迎的主要原因之一。接下来,我将详细介绍Python的特点、用途、优势和历史。 作为高级
    的头像 发表于 11-22 14:31 647次阅读

    什么是C语言?单片机有什么特点?为什么要用C语言编程

    随着技术的发展,电子产品越来越多,方便了我们的日常生活,大多数电子产品上都有单片机,而单片机是通过执行软件逻辑来实现功能的。而单片机编程最合适的编程语言是汇编语言,但是最常用、最普及的
    的头像 发表于 11-21 10:06 724次阅读
    什么是C<b class='flag-5'>语言</b>?单片机有什么特点?为什么要用C<b class='flag-5'>语言</b><b class='flag-5'>编程</b>?

    51单片机C语言编程入门学习资料

    电子发烧友网站提供《51单片机C语言编程入门学习资料.pdf》资料免费下载
    发表于 11-18 11:04 11次下载
    51单片机C<b class='flag-5'>语言</b><b class='flag-5'>编程</b>入门<b class='flag-5'>学习</b>资料

    基于Rust开发的编程语言

    Move 是一门由 Rust 语言开发的一门面向资产的编程语言,最早由 Facebook (现 Meta )投入大量的人力物力开发,用于 Libra (现 Dime )项目,处理全球性大规模支付系统的
    的头像 发表于 11-17 12:30 350次阅读

    51单片机C语言入门教程

    学习单片机实在不是件易事,一来要购买高价格的编程器,仿真器,二来要学习编程语言,还有众多种类的单片机选择真是件让人头痛的事。在众多单片机中
    发表于 09-28 08:01

    目前流行的编程语言有哪些?如何选择

    普遍针对的是不同开发人员以及不同的开发用处,例如移动应用、游戏开发、web开发、分布式系统等。所以学习编程语言,最重要是找到最适合自己的语言,并融会贯通加以使用。
    的头像 发表于 09-21 14:45 728次阅读
    目前流行的<b class='flag-5'>编程</b><b class='flag-5'>语言</b>有哪些?如何选择

    五种支持plc编程语言有哪些

    在PLC控制系统设计中,不同型号的PLC编程软件对以上五种编程语言的支持种类是不同的,所以不但对PLC的硬件性能了解外,也要了解PLC对编程语言
    发表于 08-31 14:54 698次阅读
    五种支持plc<b class='flag-5'>编程</b>的<b class='flag-5'>语言</b>有哪些

    七种编程语言学习曲线

    程序员 Dobiasd 绘制七种编程语言学习曲线图。 这些语言是:JavaScript、Java、C++、Python、Lisp、Haskell、PHP
    的头像 发表于 08-29 17:18 522次阅读
    七种<b class='flag-5'>编程</b><b class='flag-5'>语言</b>的<b class='flag-5'>学习</b>曲线

    人工智能学习什么语言

    对于机器学习而言,编程语言是非常重要的,因为机器学习的实现需要大量的算法和模型。而编程语言的选择
    的头像 发表于 08-14 14:40 555次阅读

    PLC编程语言的特点

    PLC的编程语言与一般计算机语言相比,具有明显的特点,它既不同于高级语言,也不同与一般的汇编语言,它既要满足易于编写,又要满足易于调试的要求
    的头像 发表于 07-04 17:13 593次阅读

    C语言万字学习笔记

    C语言一经出现就以其功能丰富、表达能力强、灵活方便、应用面广等特点迅速在全世界普及和推广。C语言不但执行效率高而且可移植性好,可以用来开发应用软件、驱动、操作系统等。C语言也是其它众多高级语言
    发表于 07-03 09:31 311次阅读
    C<b class='flag-5'>语言</b>万字<b class='flag-5'>学习</b>笔记

    西门子PLC编程语言介绍

    PLC目前有5种标准的编程语言,包括图形化编程语言和文本化编程语言
    发表于 06-29 16:00 950次阅读
    西门子PLC<b class='flag-5'>编程</b><b class='flag-5'>语言</b>介绍

    基于PASCAL的高级编程语言——SCL编程语言

    根据该标准,可对用于可编程逻辑控制器的编程语言进行标准化。SCL 编程语言实现了该标准中定义的 ST
    发表于 06-20 10:20 1072次阅读
    基于PASCAL的高级<b class='flag-5'>编程</b><b class='flag-5'>语言</b>——SCL<b class='flag-5'>编程</b><b class='flag-5'>语言</b>